[英]ggplot2 - legend for combined geom_point and geom_line
給了我一個數據集,我想將一個變量繪制為點,將其他變量繪制為具有不同線型的線(每個變量具有不同的顏色)。
a <- c(10:20)
df <- data.frame(a=a,b=a,c=a*a/10,d=10*sqrt(a))
df_melt <- reshape2::melt(df,id.vars='a')
ggplot(df_melt, aes(x=a,y=value,colour=variable,linetype=variable,shape=variable))+
geom_line(data=subset(df_melt,variable == "b"))+
geom_line(data=subset(df_melt,variable == "c"))+
geom_point(data=subset(df_melt,variable == "d"))
現在產生通緝的情節:
然而,圖例現在顯示所有三個變量的線型和形狀,盡管並非所有變量實際都顯示它們。
如何相應地刪除線型或形狀以使圖例與繪圖顯示一致?
通常,如果您發現自己添加了具有不同子集的多個geom_line()
或geom_point()
層,通常會有更好的方法直接涉及對變量進行操作。 在這里,我通過在scale_linetype_manual()
點或線時分別添加它們的NA
值(在scale_linetype_manual()
或scale_shape_manual()
)來實現。 (使用的形狀/線型與上面使用的形狀/線型不完全相同,但是調整起來很容易。)
ggplot(df_melt, aes(x=a,y=value,colour=variable,
linetype=variable,shape=variable))+
geom_point()+
geom_line()+
scale_linetype_manual(values=c(1,2,NA))+
scale_shape_manual(values=c(NA,NA,2))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.