我有 4 个部门(A、B、C、D)和 5 年的数据。我想画 4 条线,每个部门 1 条,每年添加一个点,并使用 stat_summary 语句添加代表平均线的第五条线,并通过参数中的scale_color_manual
点形状控制线条颜色aes()
。问题是,如果我添加点几何图形,则图例分为两部分,一部分用于点形状,另一部分用于线条颜色。我不明白如何获得 1 个结合颜色和点的图例。
这是一个例子。首先让我们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")
我得到了平均(红色)线,但图例分为两部分,一部分用于线条颜色,另一部分用于点形状。在这一点上,我的问题是:如何获得带有图例的平均线图,就像第一张图中的图例一样?也就是说,如何在绘制平均线的第二张图中仅获得一个结合线条和形状的图例?