当geom_line()和geom_segment()一起使用时,看似错误的指导颜色

时间:2012-09-18 13:47:10

标签: r ggplot2

我在使用geom_line()的绘图顶部绘制了一些线段。令人惊讶的是,geom_line()的指南(图例)颜色被绘制为我添加到绘图中的最后一个元素的颜色 - 即使它不是geom_line()。对我来说这看起来像个错误,但由于某种我不理解的原因,这可能是预期的行为。

#Set up the data
require(ggplot2)
x <- rep(1:10, 2)
y <- c(1:10, 1:10+5)
fac <- gl(2, 10)
df <- data.frame(x=x, y=y, fac=fac)

#Draw the plot with geom_segment second, and the guide is the color of the segment
ggplot(df, aes(x=x, y=y, linetype=fac)) +
  geom_line() +
  geom_segment(aes(x=2, y=7, xend=7, yend=7), colour="red")

When geom_segment() comes after geom_line()

然而,如果我首先添加geom_segment,那么指南上的颜色就像我期望的那样是黑色的:

ggplot(df, aes(x=x, y=y, linetype=fac)) +
  geom_segment(aes(x=2, y=7, xend=7, yend=7), colour="red") +
  geom_line()

When geom_line() comes after geom_segment()

功能还是错误?如果是第一个,有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:3)

特征(ISH)。绘制的指南是线型的指南。但是,必须以某种颜色绘制才能看到它。当美学映射未指定颜色时,ggplot2会以与绘图一致的颜色绘制颜色。我推测默认值是使用的最后颜色。这就是为什么当你以不同的顺序绘制它们时会看到差异。

但是,您可以控制图例的这些详细信息。

ggplot(df, aes(x=x, y=y, linetype=fac)) +
  geom_line() +
  geom_segment(aes(x=2, y=7, xend=7, yend=7), colour="red") +
  scale_linetype_discrete(guide=guide_legend(override.aes=aes(colour="blue")))

enter image description here