我想在每个条的顶部将每个栏的价值放在Barchart(晶格)中。但是,我找不到可以实现这一目标的任何选择。我只能找到轴的选项。

有帮助吗?

解决方案

创建一个自定义面板功能,例如

library("lattice")
p <- barchart((1:10)^2~1:10, horiz=FALSE, ylim=c(0,120),
              panel=function(...) { 
                args <- list(...)
                panel.text(args$x, args$y, args$y, pos=3, offset=1)
                panel.barchart(...)
              })
print(p)

lattice barchart with labels

其他提示

我会建议使用新的 DirectLabels软件包, ,可以与晶格和GGPLOT一起使用(这些标签问题使生活变得非常容易),但不幸的是,它与Barcharts不起作用。

由于我无论如何都必须这样做,因此,这是一个按@Alex Brown建议的内容的近距离的代码示例(得分是某种形式的2D数组,它将变成分组的向量) :

barchart(scores, horizontal=FALSE, stack=FALSE, 
     xlab='Sample', ylab='Mean Score (max of 9)',
     auto.key=list(rectangles=TRUE, points=FALSE),
     panel=function(x, y, box.ratio, groups, errbars, ...) {
         # We need to specify groups because it's not actually the 4th 
         # parameter
         panel.barchart(x, y, box.ratio, groups=groups, ...)
         x <- as.numeric(x)
         nvals <- nlevels(groups)
         groups <- as.numeric(groups)
         box.width <- box.ratio / (1 + box.ratio)
         for(i in unique(x)) {
             ok <- x == i
             width <- box.width / nvals
             locs <- i + width * (groups[ok] - (nvals + 1)/2)
             panel.arrows(locs, y[ok] + 0.5, scores.ses[,i], ...)
         }
     } )

我没有测试过,但是重要的位(确定面板功能中的LOC等的零件)确实有效。这是很难找出的部分。就我而言,我实际上是在使用面板来制作错误栏(恐怖!)。但是分数是与分数相同的数组。

我会稍后尝试清理 - 但是如果其他人愿意,我为此感到高兴!

如果您正在使用 groups 参数您将在 @rcs的代码中找到标签,彼此之间。这可以通过将面板扩展到panel.barchart之类的工作来解决,如果您知道R。

出于许可原因,我无法在此处发布修复代码,对不起。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top