gpt4 book ai didi

r - 在 ggplot 中为趋势线添加单独的图例

转载 作者:行者123 更新时间:2023-12-02 09:03:42 25 4
gpt4 key购买 nike

我正在使用ggplot2中的geom_linegeom_pointgeom_smooth制作带有趋势线的线图。我的代码与此类似。

year <- as.character(2011:2020)
x <- c(12, 13, 12.5, 14, 15, 17, 16, 18, 18, 19)
y <- c(25, 28, 30, 27, 30, 31, 30, 31, 33, 33)

dat <- data.frame(year, x, y) %>%
pivot_longer(cols = c(x,y), names_to = "item", values_to = "price")

ggplot(dat, aes(x=year, y=price, group=item, col=item))+
geom_line()+
geom_point(aes(shape=item))+
geom_smooth(method = "loess", se = FALSE, size=0.8, linetype="dotdash")+
labs(x = "Year",
y = "Price")

结果如下: enter image description here

我想在图例中单独包含 geom_smooth 趋势线,这样图例中就会有四个项目 - x、y、x 的趋势线和 y 的趋势线。我应该如何进行?

最佳答案

这是获取geom_smooth自定义图例的可能方法。

首先,您需要添加linetype作为geom_smoothaes的参数。然后,您可以使用 scale_linetype_manual 来自定义它,获取两个标签 xy 以及不同的名称,以便与 item 分开 图例。

使用 guides,您可以修改此图例并添加与 geom_pointgeom_line 使用的颜色图案相同的颜色图案:

ggplot(dat,  aes(x=year, y=price, group = item, color = item))+
geom_line()+
geom_point(aes(shape= item))+
geom_smooth(aes(linetype = item), method = "loess", se = FALSE, size=0.8)+
labs(x = "Year",
y = "Price")+
scale_linetype_manual(values = c("dotdash","dotdash"), name = "trendline", labels = c("x", "y"))+
guides(linetype = guide_legend(override.aes = list(linetype = c("dotdash", "dotdash"),color = scales::hue_pal()(2))))

enter image description here

它看起来是你想要得到的吗?

关于r - 在 ggplot 中为趋势线添加单独的图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60782570/

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