是否可以使用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)
答案 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
值。您可以使用y
和x
指定您感兴趣的from
- 范围。为了使密度与to
绘制的密度一致,请将范围设置为ggplot()
中的最小值和最大值。此处,df.plot$density
设置为to
,因为您只希望密度曲线的一部分位于vline的左侧。然后,您可以使用-0.25
和x
提取y
和ds$x
值。
然后使用与您相同的代码创建绘图,但添加额外的ds$y
以及上面计算的密度数据:
geom_area()