【问题标题】:add labels to lattice barchart将标签添加到格条形图
【发布时间】:2011-01-09 23:08:56
【问题描述】:

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

【问题讨论】:

    标签: r bar-chart lattice


    【解决方案1】:

    创建自定义面板函数,例如

    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)
    

    【讨论】:

    • 适用于单个图表但似乎不适用于多个图表组?
    【解决方案2】:

    因为无论如何我都必须这样做,所以这里有一个足够接近的代码示例,按照@Alex Brown 的建议(分数是某种二维数组,它会变成一个分组向量):

    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], ...)
             }
         } )
    

    我没有对此进行测试,但重要的位(在面板功能中确定位置等的部分)确实有效。这是很难弄清楚的部分。就我而言,我实际上是在使用 panel.arrows 来制作错误栏(太恐怖了!)。但是 score.ses 应该是一个与分数相同维度的数组。

    我稍后会尝试清理它 - 但如果其他人愿意,我很高兴!

    【讨论】:

      【解决方案3】:

      如果您使用groups 参数,您会发现@rcs 代码中的标签全部重叠在一起。这可以通过将 panel.text 扩展为像 panel.barchart 一样工作来解决,如果您知道 R,这很容易。

      由于许可原因,我无法在此处发布修复代码,抱歉。

      【讨论】:

      • 这是什么意思?您是否正在开发基于 lattice 的专有(必须在内部才能合法)工具? (只是好奇。)
      • 因为panel.text 的补丁版本将是衍生作品。我总是很乐意发布完全由我自己编写的代码示例。此外,我可能在任何特定时间与我的雇主签订对 GPL 贡献有影响的合同。
      【解决方案4】:

      我会建议使用新的directlabels package,它可以与 lattice 和 ggplot 一起使用(并且让这些标签问题变得非常容易),但不幸的是它不适用于条形图。

      【讨论】:

        猜你喜欢
        • 2021-03-27
        • 2014-07-04
        • 2018-08-14
        • 2021-02-20
        • 1970-01-01
        • 2014-12-07
        • 2021-09-20
        • 2022-01-21
        • 1970-01-01
        相关资源
        最近更新 更多