在ggridges中绘制两个分类矢量

时间:2018-10-13 15:45:26

标签: r ggplot2 ggridges

我有一个包含一些生物的数据集,我想在我的y轴上绘制相对于日期的数据,而我想在x轴上绘制。但是,我希望曲线的波动代表生物体的丰度。即我想绘制一个时间序列,其相对丰度被生物体分隔以显示相似的时间模式。

但是,当然,只针对生物绘制日期并不会提供任何有关丰度的信息。所以,我的问题是,有没有办法使曲线使用ggridges表示丰度?

这是我的示例数据集代码:

set.seed(1)
Data <- data.frame(
  Abundance = sample(1:100),
  Organism = sample(c("organism1", "organism2"), 100, replace = TRUE)
)
Date = rep(seq(from = as.Date("2016-01-01"), to = as.Date("2016-10-01"), by = 
'month'),times=10)
Data <- cbind(Date, Data)

ggplot(Data, aes(x = Abundance, y = Organism)) + 
  geom_density_ridges(scale=1.15, alpha=0.6, color="grey90")

这将产生两种生物的图,但是,我想在x轴上显示日期,而不要显示丰度。但是,这不起作用。我已经读到您需要指定group = Date或将日期更改为儒略日,但是,这并不能改变我没有将大量信息纳入情节的事实。

有没有人举例说明日期与类别变量(即生物)相对于连续变量的关系?

我真的很喜欢从ggridges输出,并希望能够将其用于这些可视化。预先感谢您的帮助!

干杯, 安妮

1 个答案:

答案 0 :(得分:1)

要使用geom_density_ridges,将有助于调整数据的形状以在单独的行中显示观察结果,而不是Abundance总结的结果。

library(ggplot2); library(ggridges); library(dplyr)
# Uncount copies the row "Abundance" number of times
Data_sum <- Data %>%
  tidyr::uncount(Abundance)

ggplot(Data_sum, aes(x = Date, y = Organism)) + 
  ggridges::geom_density_ridges(scale=1, alpha=0.6, color="grey90")

enter image description here