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

时间:2020-03-20 22:50:02

标签: r ggplot2

我正在用ggplot2geom_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趋势线。我应该如何进行?

1 个答案:

答案 0 :(得分:5)

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

首先,您需要添加linetype作为aes的{​​{1}}的参数。然后,您可以使用geom_smooth自定义标签,以获取两个标签scale_linetype_manualx以及另一个名称,以便与y图例分开。

使用item,您可以修改此图例并添加与guidesgeom_point所用的相同的颜色模式:

geom_line

enter image description here

它看起来像您想要得到的吗?