【问题标题】:Building a plot for each unique value of a column为列的每个唯一值构建图
【发布时间】:2020-02-20 08:54:51
【问题描述】:

我有包含多个变量的数据,我想为一列中的每个唯一值绘制一个图。我在这里查看了多个类似问题的答案,但我无法解决我的问题。

数据集示例如下:

structure(list(ID = c(1, 1, 1, 2, 2), Date = c("01/02/20", "01/03/20", 
"01/05/20", "01/02/20", "01/05/20"), New = c(10, 5, 5, 10, 5), 
    Old = c(20, 20, 20, 20, 20), Percentage = c(0.5, 0.25, 0.25, 
    0.5, 0.25)), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))
ID      Date          New    Old   Percentage 
1       01/02/20      10     20    0.5
1       01/03/20      5      20    0.25
1       01/05/20      5      20    0.25
2       01/02/20      10     20    0.5
2       01/05/20      5      20    0.25

我想做一个 for 循环,遍历 ID 的唯一值并绘制新旧 vs 日期。也可能是百分比变化的另一个方面,但主要是第一个比较图。我首先尝试将其设置为 date vs new 如下:

for (ii in unique(data$ID)) {
  plt <- ggplot(data %>% filter(ID == ii),
                aes(x = "Month",
                    y = "New")) +
    geom_point(color = "dodgerblue3") + 
    theme_minimal()
  print(plt)

}

结果基本上给了我一个我不明白的点情节。如何添加旧比较以及另一个百分比图。

【问题讨论】:

  • 你不能有 aes(x="Month", y="New" ..),应该是 aes(x=Month,y=New..)?话说回来,Month 怎么不在你展示的数据集中?
  • 请更准确地了解您实际要查找的内容。否则真的很难帮你。
  • 我会在下面发布一个解决方案我真的不知道它是否真的是你在寻找什么。

标签: r for-loop ggplot2 dplyr


【解决方案1】:

这有点像你要找的东西吗?

library(tidyverse)
library(lubridate)

df %>%
    mutate(Date = mdy(Date)) %>%
    pivot_longer(cols = c("New", "Old"), names_to = "newOrOld") %>%
    ggplot(aes(Date, value, colour = newOrOld)) +
    geom_point() +
    facet_grid(. ~ ID)

【讨论】:

    【解决方案2】:

    -关于你的循环,我认为你可以只使用 facet 函数

    -关于老/新问题,我认为你的问题来自你的数据结构,不整洁。

    试试这个:

    ## get tidy data
    tidy_data <- data %>% pivot_longer(c("New", "Old"), names_to = "Age", values_to = "Number")
    
    ## get the plots (facet_wrap is used to have multiple plots)
    plt <- ggplot(tidy_data, aes(x = Date, y = Number, color = Age)) + geom_point() + facet_wrap(~ ID)
    plt
    

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2020-03-10
      相关资源
      最近更新 更多