代码之家  ›  专栏  ›  技术社区  ›  jay.sf

如何在条形图中定义附加条的间距?

  •  1
  • jay.sf  · 技术社区  · 5 年前

    y1 , y0 dy 肩并肩。 应出现在主筋后的小间距处。(旋转的)x轴记号应位于一起的三个条的中心。

    我一直在胡闹 width space 以及 at 选择了一段时间,但我还不明白背后的理由。到目前为止,最好的解决办法是为该项目增加一个新的地块 dy ,但这还远远不够理想。

    barplot(rbind(d$y0, d$y1), beside=TRUE, xaxt="n", col=c("darkgrey", "white")
            # , width=c(1, 1, .2)
            , space=c(0, 2)
            )
    barplot(d$dy, add=TRUE, width=.2, space=c(19, 25), col="blue", xaxt="n")
    box()
    axis(1, at=seq(1:7)*4 - 1.5, labels=2000:2006, las=2)
    

    enter image description here

    我怎样才能用底图做到这一点?有人能解释一下如何定义参数吗?

    enter image description here

    数据

    d <- structure(list(y0 = c(837.4, 798.6, 817.9, 882.6, 870.3, 857.9, 
    776.6), y1 = c(827.1, 790, 807.7, 871.9, 861.8, 849.5, 768.2), 
        dy = c(122.999761165512, 107.688454795893, 124.709622203203, 
        121.232721504646, 97.6674709870162, 97.9135097330686, 108.163790883338
        )), class = "data.frame", row.names = c("1", "2", "3", "4", 
    "5", "6", "7"))
    
    1 回复  |  直到 5 年前
        1
  •  4
  •   G5W    5 年前

    您可以在原始箱线图中添加额外的(蓝色)条,使其正确对齐。我还添加了一个高度为零的条来分隔蓝色条。为了使刻度对齐,保存并使用调用boxplot返回的值。

    BP = barplot(rbind(d$y0, d$y1, rep(0,7), d$dy), beside=TRUE, 
        xaxt="n", width=c(1,1,0.4,0.2), space=c(0, 2),
        col=c("darkgrey", "white", "white", "blue"))
    box()
    axis(1, at=(BP[1,] + BP[2,])/2, labels=2000:2006, las=2)
    

    Barplot

    根据 barplot 文档

    所以我用了你所有的 space=c(0,2)