我在製作條形圖時出現了問題,其中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