我有4個部門(A,B,C,D)和5年的數據。我想繪製4條線,每個扇區1條,每年添加一個點,並使用stat_summary語句添加代表平均線的第五條線,並通過scale_color_manual
和aes()
參數控制線條顏色。問題是,如果我添加點幾何,圖例分爲兩部分,一部分用於點形狀,另一部分用於線條顏色。我不明白如何獲得1個結合顏色和點的圖例。當我使用stat_summary與行和點geoms我得到一個雙重的傳說
這裏是一個例子。首先,讓我們來構建數據幀dtfr
如下:
a <- 100; b <- 100; c <- 100; d <- 100
for(k in 2:5){
a[k] <- a[k-1]*(1+rnorm(1)/100)
b[k] <- b[k-1]*(1+rnorm(1)/100)
c[k] <- c[k-1]*(1+rnorm(1)/100)
d[k] <- d[k-1]*(1+rnorm(1)/100)
}
v <- numeric()
for(k in 1:5){ v <- c(v,a[k],b[k],c[k],d[k]) }
dtfr <- data.frame(Year=rep(2008:2012,1, each=4),
Sector=rep(c("A","B","C","D"),5),
Value=v,
stringsAsFactors=F)
現在讓我們開始通過ggpolt2
繪製我們的圖形。在第一張圖我們繪製線條和點,而平均線GEOM:
library(ggplot2)
ggplot(dtfr, aes(x=Year, y=Value)) +
geom_line(aes(group=Sector, color=Sector)) +
geom_point(aes(color=Sector, shape=Sector)) +
# stat_summary(aes(colour="mean",group=1), fun.y=mean, geom="line", size=1.1) +
scale_color_manual(values=c("#004E00", "#33FF00", "#FF9966", "#3399FF", "#FF004C")) +
ggtitle("Test for ggplot2 graph")
在這個圖中,我們有線條顏色,並點了傳說塑造盡在其中:
但如果我用的是stat_summary
使用下面的代碼繪製平均線:
ggplot(dtfr, aes(x=Year, y=Value)) +
geom_line(aes(group=Sector, color=Sector)) +
geom_point(aes(color=Sector, shape=Sector)) +
stat_summary(aes(colour="mean",group=1), fun.y=mean, geom="line", size=1.1) +
scale_color_manual(values=c("#004E00", "#33FF00", "#FF9966", "#3399FF", "#FF004C")) +
ggtitle("Test for ggplot2 graph")
我得到的平均值(紅)線,但傳說是分爲兩部分,一部分用於線條顏色,另一部分用於點形狀。在這一點上,我的問題是:我怎樣才能得到像第一個圖形中的圖例的平均線圖?也就是說,如何在第二個圖形中只繪製一條線條和形狀的圖例,並在其中畫出平均線?
+1好的解決方案,很好的解釋 – alexwhan
謝謝非常適合你的良好工作的例子。現在我明白我的錯誤在哪裏了。 – user2509571