9

我在 R 中创建条形图时遇到了一个小问题。有 3 个变量:

a <- c(3,3,2,1,0)
b <- c(3,2,2,2,2)
c <- 0:4

条形图应按“a”和“c”分组,“b”应堆叠在“a”之上。单独进行分组和堆叠很简单:

barplot(rbind(a,c), beside=TRUE)
barplot(rbind(a,b), beside=FALSE)

你怎么能在一张图中同时做这两个?

4

2 回答 2

10

这样做需要考虑如何barplot绘制堆叠条。基本上,您需要在适当的位置为其提供一些值为 0 的数据。使用您的数据:

mydat <- cbind(rbind(a,b,0),rbind(0,0,c))[,c(1,6,2,7,3,8,4,9,5,10)]
barplot(mydat,space=c(.75,.25))

条形图

要了解幕后发生的事情,请查看mydat

> mydat
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
a    3    0    3    0    2    0    1    0    0     0
b    3    0    2    0    2    0    2    0    2     0
     0    0    0    1    0    2    0    3    0     4

在这里,您使用三个值( 的值a、 的值b、 的值c)绘制每个条形图。矩阵的每一列mydat都是一个条,排序后 ab 条与 c 条适当地穿插在一起。你可能想玩弄间距和颜色。

显然,这个版本已经在 R-help 上多次讨论过, 没有 很好 解决方案,所以希望这会有所帮助。

于 2013-08-06T13:47:12.217 回答
0

试试这个lattice库:

library("lattice")
MyData <- as.data.frame(Titanic)

barchart(Freq ~ Survived | Age * Sex, groups = Class, data = MyData,
         auto.key = list(points = FALSE, rectangles = TRUE, space
         = "right", title = "Class", border = TRUE), xlab = "Survived",
         ylim = c(0, 800))

输出

如您所见,分组和绘图是同时完成的。

另请参阅:https ://stat.ethz.ch/pipermail/r-help/2004-June/053216.html

于 2013-08-06T13:14:24.263 回答