gpt4 book ai didi

r - 当我将 stat_summary 与线和点几何体一起使用时,我会得到一个双重图例

转载 作者:行者123 更新时间:2023-12-04 11:20:54 27 4
gpt4 key购买 nike

我有 4 个部门(A、B、C、D)和 5 年的数据。我想画 4 条线,每个部门 1 条线,每年添加一个点,并使用 stat_summary 语句添加代表平均线的第五条线,并通过 scale_color_manual 控制线条颜色和 aes() 中的点形状争论。问题是,如果我添加点 geom,图例将分为两部分,一部分用于点形状,另一部分用于线条颜色。我不明白如何获得 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")

在此图中,我们将图例与线条颜色和点形状合二为一:

enter image description here

但是如果我使用 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")

我得到平均(红色)线,但图例分为两部分,一部分用于线条颜色,另一部分用于点形状。在这一点上,我的问题是:如何获得带有图例的均值线图,就像第一张图中的图一样?也就是说,如何在绘制平均线的第二张图中仅获得一个结合线条和形状的图例?

最佳答案

尝试这个:

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",shape="mean",group=1), fun.y=mean, geom="line", size=1.1) +
scale_color_manual(values=c("#004E00", "#33FF00", "#FF9966", "#3399FF", "#FF004C")) +
scale_shape_manual(values=c(1:4, 32)) +
ggtitle("Test for ggplot2 graph")

ggplot2 example with a combined legend

也许知识渊博的人可以进来纠正我的解释(或提供更好的解决方案),但我是这样理解的:您在色标中有 5 个值,但在形状标度中只有 4 个;您缺少“平均值”的值。所以秤在某种程度上并不真正兼容。您可以通过为平均线分配一个空白形状 (32) 来解决此问题。

关于r - 当我将 stat_summary 与线和点几何体一起使用时,我会得到一个双重图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com