中心条形图

时间:2011-12-23 22:06:52

标签: r graphics bar-chart

我有一个数据集,其中包含四个类别的百分比:前两个类别是"肯定"最底层的两个类别是"否定"所以我想对齐2和3之间的边界,这样它就是所有条形上的零点。 (我正在绘制成对的条形图:在ext.obs = 0的条形图集和ext.obs = 1的条形图上。)这是一部分数据:

structure(list(ext.obs = c(0, 0, 0, 1, 1, 1), comp = c(1, 2, 
3, 1, 2, 3), `1` = c(0.00617283950617284, 0.00609756097560976, 
0.0111111111111111, 0, 0, 0), `2` = c(0.154320987654321, 0.195121951219512, 
0.161111111111111, 0.211180124223602, 0.392638036809816, 0.23030303030303
), `3` = c(0.709876543209877, 0.676829268292683, 0.666666666666667, 
0.745341614906832, 0.521472392638037, 0.721212121212121), `4` = c(0.12962962962963, 
0.121951219512195, 0.161111111111111, 0.0434782608695652, 0.0858895705521472, 
0.0484848484848485)), .Names = c("ext.obs", "comp", "1", "2", 
"3", "4"), row.names = c(1L, 2L, 3L, 11L, 12L, 13L), class = "data.frame")

我希望能够将这些数据放在一起,我可以做barplot(datamatrix)并让它变得更好。但除了绘制前两个类别,然后使用barplot(..., add=T)添加底部的两个类别之外,我无法找到其他方法。

这里是我编写的代码(我实际上用par(mfrow=c(1, 10)绘制了10对条形图)但是for(i in 1:10)循环:)

bar.loc <- barplot(t(as.matrix(tab3[c(i, i+10), c(5,6)])),
          ylim=c(-0.5, 1.0),
          col=my.pal[3:4],
          xaxt="n",
          yaxt="n",
          ylab="",
          xlab=components[i]
          )
barplot(t(as.matrix(tab3[c(i, i+10), c(4, 3)]*(-1))),
          add=T,
          col=my.pal[2:1],
          yaxt="n",
          xaxt="n",
          ylab="",
          xlab="")

您可以看到部分成品here或图片位于以下位置:

enter image description here

有人能想出更优雅的方法吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

barplot( t(cbind(tab3[,5:6],-tab3[,6:5],-tab3[,4:3])),
    col=c('lightblue','darkblue',NA,NA,'tan','brown') )