在使用ggplot2中的组、线型和颜色时如何只显示一个图例?

9
我正在创建一个非常简单的图表,它将数据分组并使用分组变量来确定线条样式和颜色。然后我使用“scale_linetype_manual”和“scale_colour_manual”来覆盖它们。到目前为止一切顺利,但是当我尝试修改图例标签或标题时,图例会分成两部分:一个用于线型,另一个用于颜色。我只想要一个图例,但是带有自定义标签和标题。
根据这个问题,我确保给两个比例对象命名相同的名称,但似乎没有帮助。
最小示例:
X <- data.frame(TPP=factor(c(1,5,10,1,5,10,1,5,10)), 
                value=c(-0.035819, 0.003356, 0.066091, -0.028039, 0.004333, 0.060292, -0.023115, 0.005661, 0.058821), 
                horizon=c(1,1,1,2,2,2,3,3,3))
ggplot(X, aes(x=horizon, y=value, group=TPP, col=TPP, linetype=TPP))+
  geom_line(size=1)+
  scale_linetype_manual(name="X", values = c("solid","dashed", "dotted")) +
  scale_color_manual(name="X", values = c("black", "red", "blue"), labels=c("Low", "5","High"))

这将得到以下带有两个图例的 图表。我该如何重新组合这些图例,使用自定义标签和标题?

你想要移除不需要的图例吗?比如在 scale_...() 函数中使用 guide="none" 参数。 - tospig
1个回答

14

这可能有所帮助:

 ggplot(X, aes(x=horizon, y=value, group=TPP, col=TPP, linetype=TPP))+geom_line(size=1)+
  scale_linetype_manual(name="X", values = c("solid","dashed", "dotted"),labels=c("Low", "5","High")) +
  scale_color_manual(name ="X", values = c("black", "red", "blue"),labels=c("Low", "5","High"))

在此输入图像描述

如果scale_color_manualscale_linetype_manual中定义的标签不同,或者它们只在其中一个中指定,您将获得两个不同的图例。


谢谢,我不知道需要复制标签以避免图例重复。 - Thijs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接