【问题标题】:Fill different colors for each quantile in geom_density() of ggplot [duplicate]为ggplot的geom_density()中的每个分位数填充不同的颜色[重复]
【发布时间】:2015-12-01 20:46:56
【问题描述】:

我正在使用 ggplot 来显示数据的百分位数。我正在使用以下代码,

data <- seq(from=0,to=30,length.out=1000)

q <- quantile(data)

ggplot()+ 
  geom_density(aes(x=data)) +  
  annotate(geom="text", x=q, y=0, label=names(q)) +
  theme(text = element_text(size=10)) +
  geom_vline(x=q, linetype = "longdash")

以下是我得到的图表,

我希望为每个部分填充不同的颜色。即 0-25% 的一种颜色和 25-50 的另一种颜色。有可能吗?

垂直线也贯穿整个图表。我想停止它,直到曲线单独。而不是完全通过它。

谁能帮我做这两件事?

【问题讨论】:

  • 如果您制作一个真实可重复的示例(即带有数据的示例)来解决您的问题,我们更有可能为您提供帮助。我们可以使用和使用的东西向您展示如何解决您的问题。您可以查看this SO post,了解如何在 R 中制作一个很好的可重现示例。我怀疑 a solution 可以用 geom_polygon() 制作
  • @EricFail 很抱歉没有生成可重现的示例。我已经更新了它的一个样本。这样好吗?
  • @EricFail 我已经在绘图中使用了 geom_density。我也可以使用 geom_polygon 吗?
  • 查看这个问题的答案herehere

标签: r ggplot2


【解决方案1】:

只需从where Sam is pointing to复制答案

dt <- data.frame(x=c(1:200),y=rnorm(200))
dens <- density(dt$y)
df <- data.frame(x=dens$x, y=dens$y)
probs <- c(0, 0.25, 0.5, 0.75, 1)
quantiles <- quantile(dt$y, prob=probs)
df$quant <- factor(findInterval(df$x,quantiles))
ggplot(df, aes(x,y)) + geom_line() + geom_ribbon(aes(ymin=0, ymax=y, fill=quant)) + scale_x_continuous(breaks=quantiles) + scale_fill_brewer(guide="none")

【讨论】:

    猜你喜欢
    • 2020-10-03
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2018-10-24
    • 2017-01-07
    • 1970-01-01
    相关资源
    最近更新 更多