在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)
如何在一个图表中同时执行这两项操作?
答案 0 :(得分: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 various times without great solutions上讨论过此版本,所以希望这会有所帮助。
答案 1 :(得分:0)
尝试lattice
lib:
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