我在制作条形图时出现了问题,其中y轴不计数,但是来自变量的值。ggplot2 - 堆叠/遮挡条形图
我使用stat=identity
,这对一个变量很合适。但是如果我有两个变量并且想要创建堆叠/遮挡条形图呢?
我这里有一些模拟数据:
foo <- data.frame(case=c('A','B','C'), var1=rnorm(3), var2=rnorm(3))
所以我的三个纠纷案对x轴分别为A,B和C.我想绘制VAR1和VAR2为条形的值。谢谢!
我在制作条形图时出现了问题,其中y轴不计数,但是来自变量的值。ggplot2 - 堆叠/遮挡条形图
我使用stat=identity
,这对一个变量很合适。但是如果我有两个变量并且想要创建堆叠/遮挡条形图呢?
我这里有一些模拟数据:
foo <- data.frame(case=c('A','B','C'), var1=rnorm(3), var2=rnorm(3))
所以我的三个纠纷案对x轴分别为A,B和C.我想绘制VAR1和VAR2为条形的值。谢谢!
首先,更改您的示例数据。制作数据框时,您不需要cbind()
,因为在这种情况下,您可以将所有列作为因子。
foo <- data.frame(case=c('A','B','C'), var1=rnorm(3), var2=rnorm(3))
要使用两个变量barplot最简单的方法是将数据从宽到长格式化。
library(reshape2)
foo.long<-melt(foo)
foo.long
case variable value
1 A var1 0.7150827
2 B var1 -0.5279363
现在使用value
为y值和variable
用于填充。 stat="identity"
和position="dodge"
将确保实际值被绘制并且酒吧被锁定。
ggplot(foo.long, aes(case,value,fill=variable))+
geom_bar(position="dodge",stat="identity")
我不回答这个问题,在SENS我不使用ggplot2
。但是,如果您想使用其宽格式的data.frame,另一种方法是使用“格子from
晶格package. To get
ggplot2 theme, I am using
latticeExtra`。使用@Didzis数据:
library(latticeExtra)
barchart(var1+var2~case,data=foo,origin=0,
par.settings = ggplot2like(),axis=axis.grid,auto.key=TRUE)
感谢一大堆!我也改变了我的问题中的模拟数据,以免混淆未来的读者。 – Heisenberg
嗯,我刚刚遇到一个真实的实例,其中我的数据框中的所有列(从Excel导入)都是向量。你能否解释或指出我对此行为的资源? R何时认为一列是因素? – Heisenberg
出于好奇,是否可以控制哪个变量首先从ggplot绘制?或者我必须重新排列数据框? – Heisenberg