【问题标题】:Bar plot in loop for each observation每个观察的循环条形图
【发布时间】:2022-09-30 12:54:48
【问题描述】:

这是其中 ID 是分类变量的示例数据。

ID <- c(12, 34, 560, 45, 235)
W1 <- c(0, 5, 7, 6, 0)
W2 <- c(7, 8, 9, 5, 2)
W3 <- c(0, 0, 3, 5, 9)
 
df <- data.frame(ID, W1, W2, W3)
df$ID <- as.factor(df$ID)

我想使用三周 W1:W3 的频率数据为每个 ID 绘制五个条形图。在实际的数据集中,我有 30 多周和大约 150 个 ID,因此这里的目的是有效地做到这一点。没什么特别的,但ggplot 会是理想的,因为我需要操纵一些美学。

如何使用循环执行此操作并将图像保存在一个文件(pdf)中?

谢谢你的帮助!

    标签: r ggplot2 bar-chart


    【解决方案1】:

    这类问题通常是数据重组问题。见reshaping data.frame from wide to long format。重塑数据后,绘图由ID 刻面,避免循环。

    library(ggplot2)
    
    ID <- c(12, 34, 560, 45, 235)
    W1 <- c(0, 5, 7, 6, 0)
    W2 <- c(7, 8, 9, 5, 2)
    W3 <- c(0, 0, 3, 5, 9)
    
    df <- data.frame(ID, W1, W2, W3)
    df$ID <- as.factor(df$ID)
    
    df |>
      tidyr::pivot_longer(-ID, names_to = "Week") |>
      ggplot(aes(Week, value, fill = Week)) +
      geom_col() +
      facet_wrap(~ ID) +
      theme_bw(base_size = 16)
    

    创建于 2022-09-30,reprex v2.0.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      相关资源
      最近更新 更多