映射第三个变量以填充ggridges

时间:2019-07-16 20:36:07

标签: r ggridges

我想使用ggridges包中的fill选项来显示数据集中另一个变量的平均值。

似乎我只能使用fill选项来描述图表或分位数中已经存在的x值。像这样:

library(ggridges)
library(viridis)

iris %>% 
  ggplot(aes(x = Sepal.Length, y = Species, fill = ..x..)) + 
  geom_density_ridges_gradient() +
  scale_fill_viridis(option = "C")

但是,最好使用填充颜色来总结第三个变量。例如,我想显示每个物种在每个x值(Speal.Length)的平均Petal.Width值。

在我的脑海中,这就是它的工作方式,但是可惜它什么也没做:

iris %>% 
  group_by(Sepal.Length, Species) %>% 
  mutate(Avg.Petal.Length = mean(Petal.Length)) %>%
  ggplot(aes(x = Sepal.Length, y = Species, fill = Avg.Petal.Length)) + 
  geom_density_ridges_gradient() +
  scale_fill_viridis(option = "C")

1 个答案:

答案 0 :(得分:0)

如果要填充每种物种的平均值,则需要先将数据分组:

library(tidyverse)
library(ggplot)

iris <- iris%>%
  group_by(Species)%>%
  mutate(test = mean(Petal.Width))

此后,填充aes将起作用:

iris %>% 
  ggplot(aes(x = Sepal.Length, y = Species, fill =test)) + 
  geom_density_ridges_gradient() +
  scale_fill_viridis(option = "C")