首页 > 解决方案 > 跨运行时间序列数据的 Raincloud 图

问题描述

我正在努力按照 **Allen, M., Poggiali, D., Whitaker, K., Marshall, TR, & Kievit, RA (2019) 中给出的代码制作雨云图。Raincloud plots:用于强大数据可视化的多平台工具。对于与文章中提到的图 10 平行的图形。我预计每个时间点都会有雨云。但无论 x 轴上给出的时间如何,我都会得到集体图表。这是我正在使用的示例数据;

set.seed(123)
  ID = rep(c("BAU","IMP","SGR","CR"), each=5000)
  Time = rep (c(1:1000), each = 20)
  data <- data.frame( ID, Time,  profits = runif(20000,0,1))

代码如下:

source("https://gist.githubusercontent.com/benmarwick/2a1bb0133ff568cbe28d/raw/fb53bd97121f7f9ce947837ef1a4c65a73bffb3f/geom_flat_violin.R")

    data <- data.frame( ID, Time,  profits = runif(20000,0,1))
      AD<- ggplot(data, aes(x = Time, y = profits, fill = ID)) +
        geom_flat_violin(aes(fill = ID),position = position_nudge(x =.1
                                                                                   , y = 0), adjust = 1.5, trim = FALSE, alpha = .5, colour = NA)+
        geom_point(aes(x = as.numeric(ID)-.15, y =profits, colour = ID
        ),position = position_jitter(width = .05), size = 1, shape = 20)+
        geom_boxplot(aes(x =Time,  y = profits, fill = ID),outlier.shape
                     = NA, alpha = .5, width = .1, colour = "black")+ 
        scale_colour_brewer(palette = "Dark2")+
        scale_fill_brewer(palette = "Dark2")+  theme_classic() + theme(legend.position="top") +
        ggtitle("Profits Across Pysical Experiments")

我得到了以下情节 在此处输入图像描述

如果为每个时间点绘制这些图,我需要查看这些图的外观。有人可以帮忙吗?

更新:来自代码的结果图2来自下面的评论 在此处输入图像描述

标签: rggplot2dplyrtime-series

解决方案


您可能会考虑添加group = Time %/% 10或类似aes()调用,以便每 10 次获得单独的雨云图。运算符是“%/%整数除法”,它提供除法步骤中最接近的整数。它在这里很有用,可以将一系列时间值组合在一起。您也可以使用类似的东西group = floor(Time / 10)来获得类似的效果。

在此处输入图像描述

分别显示所有 1000 次(例如使用group = Time)似乎很难辨别:

在此处输入图像描述

编辑:这是 25 个雨云的相关代码行,每个 40 个时间步长:

ggplot(data, aes(x = Time, y = profits, fill = ID, group = Time %/% 40)) +

在此处输入图像描述


推荐阅读