vline左侧的阴影密度图?

时间:2016-03-25 16:59:07

标签: r ggplot2

是否可以使用vline作为截止值来着色密度图?例如:

df.plot <- data.frame(density=rnorm(100))
library(ggplot2)
ggplot(df.plot, aes(density)) + geom_density() + 
  geom_vline(xintercept = -0.25)

我尝试创建一个新变量,但它不能像我预期的那样工作

df.plot <- df.plot %>% mutate(color=ifelse(density<(-0.25),"red","NULL"))


ggplot(df.plot, aes(density, fill = color, colour = color)) + geom_density() + 
  geom_vline(xintercept = -0.25)

1 个答案:

答案 0 :(得分:4)

我不知道如何直接使用C1_ID |C1_Name | L1_ID | C2_ID| L2_ID|Category ---------------------------------------------- a | Alan |123 | k |888 |1 a | Alan |123 | k |789 |2 a | Alan |123 | m |333 |1 a | Alan |453 | n |999 |2 a | Alan |453 | n |369 |4 a | Alan |453 | n |258 |3 b | Ben |345 | l |456 |0 b | Ben |345 | l |147 |1 c | John |111 | i |159 |2 c | John |111 | i |357 |1 c | John |111 | s |153 |2 c | John |756 |null |null |null f | Sasha |987 | e |684 |1 z | Peter |145 |null |null |null 执行此操作。但是你可以在所需的范围内计算ggplot之外的密度:

ggplot

set.seed(4132) df.plot <- data.frame(density=rnorm(100)) ds <- density(df.plot$density, from = min(df.plot$density), to = -0.25) ds_data <- data.frame(x = ds$x, y = ds$y) 估计第一个参数中给出的点的密度。结果将包含density()x值。您可以使用yx指定您感兴趣的from - 范围。为了使密度与to绘制的密度一致,请将范围设置为ggplot()中的最小值和最大值。此处,df.plot$density设置为to,因为您只希望密度曲线的一部分位于vline的左侧。然后,您可以使用-0.25x提取yds$x值。

然后使用与您相同的代码创建绘图,但添加额外的ds$y以及上面计算的密度数据:

geom_area()

enter image description here