如何在R中添加填充渐变色到只有一个变量的密度图中

fsi0uk1n  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(92)

我的数据有两列-日期和值。我可以使用geom_density函数创建密度图。我想用渐变色f.e.填充它。蓝色到红色,但我不知道怎么做。我在网上找到的任何东西都需要Y值,但我只有一个变量。
数据示例:

Month_day; Temperature_anomaly
01-01;   -1.24
01-02;    0.31
01-03;    1.13
01-04;   -0.16

字符串
代码:

ggplot(data, aes(x = Temperature_anomaly)) + 
   geom_density()


这将创建简单的密度图,但是否创建单一密度图,并根据相同的值(Temperature_anorange)添加渐变填充颜色?

wn9m85ua

wn9m85ua1#

您可以预先计算密度并绘制极细的柱以获得渐变效果。沿着x轴添加边缘地毯图可能是显示密度所基于的点的一个很好的触摸:

library(tidyverse)

data %>%
  reframe(anomaly = density(Temperature_anomaly, n = 1000)$x,
          density = density(Temperature_anomaly, n = 1000)$y) %>%
  ggplot(aes(anomaly, density, fill = anomaly)) +
  geom_col(width = 0.05) +
  geom_line() +
  geom_vline(xintercept = 0, linetype = 2) +
  geom_rug(data = data, sides = "b", inherit.aes = FALSE,
           aes(x = Temperature_anomaly, color = Temperature_anomaly)) +
  scale_fill_gradient2(low = "blue", mid = "gray", high = "red") +
  scale_colour_gradient2(low = "blue", mid = "gray", high = "red", 
                         guide = "none") +
  labs(x = "Temperature Anomaly", y = "Probability density") +
  theme_minimal(base_size = 16)

字符串


的数据

使用数据

set.seed(1)

data <- data.frame(Temperature_anomaly = rnorm(20, 1))

slmsl1lt

slmsl1lt2#

使用{ggridges}软件包的替代解决方案:

set.seed(123)
data <- data.frame(Temperature_anomaly = rnorm(20))

library(ggridges)
ggplot(data, aes(x = Temperature_anomaly, y = 1, fill = after_stat(x))) + 
  geom_density_ridges_gradient()+
  scale_fill_gradient2(low="blue", mid = "white", high="red")

字符串
其给出:
x1c 0d1x的数据

相关问题