首页 > 解决方案 > 如何同时使用 geom_line 和 geom_point 更改图例形状?

问题描述

我的数据:

日期;原始;装配;phen;噪音;类型;type2;type3;type4

2013-04-16;0.77;0.76;NA;NA;1;2;3;4

2013-04-24;不适用;0.73;不适用;1;1;2;3;4

2013-05-10;不适用;0.70;0.11;不适用;1;2;3;4

2013-05-18;0.68;0.65;NA;1;1;2;3;4

我想绘制原始时间序列 X 拟合时间序列,显示拟合时间序列上的一些检测点以及存在噪声的位置。但是我在使用图例时遇到了麻烦,一旦我想为每个表示显示正确的图例。

我正在尝试这个:

ggplot(data=df) + geom_line(data=df, aes(x=Date, y=fitted_data, color= >type2)) +  labs(x = "Dates", y="EVI") + 
geom_point(data=df, aes(x=Date, y=original_data, color = type)) +
geom_point(data=df, aes(x=Date, y=phen, color = type3), size =3) +
geom_point(data=df, aes(x=Date, y=noise, color = type4), size =1.2) +
ylim(0, 1) + theme(axis.text.x=element_text(angle=30, hjust=1, size=12)) >+ theme(axis.text.y=element_text(size=12)) +
theme(legend.text=element_text(size = 15), legend.position="bottom")

在此处输入图像描述

但我想为每个表示显示正确的符号

标签: rggplot2time-series

解决方案


ggplot(data=df) + geom_line(data=df, aes(x=Date, y=fitted_data, color= type2)) +  labs(x = "Dates", y="EVI") + 
  geom_point(data=df, aes(x=Date, y=original_data, color = type)) +
  geom_point(data=df, aes(x=Date, y=phen, color = type3), size =3) +
  geom_point(data=df, aes(x=Date, y=noise, color = type4), size =1.2) +
   ylim(0, 1) + theme(axis.text.x=element_text(angle=30, hjust=1, size=12)) + theme(axis.text.y=element_text(size=12)) +
  theme(legend.text=element_text(size = 10), legend.position="bottom")  +
  theme(legend.title=element_blank()) +  scale_colour_manual(values = c("red", "black", "brown", "blue"),
                       guide = guide_legend(override.aes = list(
                         linetype = c("blank", "solid", "blank", "blank"), shape = c(16, NA, 16, 16)
                         )))

推荐阅读