我想并排绘制y1
,y0
及其比率dy
。 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)
我该如何使用基准图?谁能解释一下如何定义参数?
预期产量
预期输出应该是这样的。
数据
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"))
答案 0 :(得分:4)
您可以在原始箱线图中添加额外的(蓝色)条,以使其正确对齐。我还要添加一个高度为零的栏,以分隔蓝色栏。为了使刻度线对齐,保存并使用从调用到箱线图的返回值。
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
文档
如果height是一个矩阵,并且sideside为TRUE,则可以通过以下方式指定空间 两个数字,第一个是同一条形图之间的空格 组,第二组之间的间隔。
因此,我使用了您拥有的space=c(0,2)
,以使小节之间没有空格,组之间没有2个单位。
关于宽度,我想保持您的原始宽度(两个主色条为1)和0.2为较小的蓝色色条。我尝试将零高度栏的宽度设置为0.2,但它似乎太接近了,因此我将空格栏扩大到了0.4。