1

假设我正在从 diamonds 数据集中绘制两个密度:

d_1 <- subset(diamonds, color %in% c("D", "E"))
ggplot(data = d_1, aes(x = price,colour=color)) + geom_density() + 
      geom_vline(xintercept = 5000) + geom_vline(xintercept = 2500)

我的问题是关于我可以选择的方式,vlines以便它们与用于geom_density分发的颜色相匹配。

我知道我可以使用geom_vline(xintercept = 2500, colour = "red"),但我怎么能geom_vline继承aes分发中使用的颜色。

4

1 回答 1

2

您可以将新列添加到数据框中,您可以在其中为每种颜色设置 xintercept 值

d_1$xint<-ifelse(d_1$color=="D",2500,5000)

然后,您只需要一次geom_vline()调用,在其中aes()设置xintercept=为 new column 和colour=to column color

ggplot(data = d_1, aes(x = price,colour=color)) + geom_density()+
  geom_vline(aes(xintercept=xint,colour=color))

在此处输入图像描述

于 2013-06-07T12:05:46.650 回答