【问题标题】:function not recognising color variable in ggplot chart函数无法识别 ggplot 图表中的颜色变量
【发布时间】:2022-01-17 20:15:20
【问题描述】:

我有一个与 22 个城市相关的融合数据框,每个城市有 5 个大小带。变量列与日期有关。数据框如下所示:

City size_band variable value
Madrid 1 to 3 April 2020 0.74
Madrid 4 to 6 April 2020 0.71
Madrid 7 to 9 April 2020 0.78
Madrid 10 to 12 April 2020 0.77
Madrid 13 to 15 April 2020 0.72
Madrid 1 to 3 May 2020 0.81
Madrid 4 to 6 May 2020 0.79
... ... ... ...

我正在尝试创建一个函数,该函数使用 geom_point 为每个城市绘制时间序列。我试过下面的代码:

Cities_List<-split(data,
                    f = data$City)

# Function to plot different cities
plot.cities <- function(x) {
  for (i in 1:length(Cities_List)) {
    
    p<- x[[i]] %>%
      ggplot(aes(variable, value)) +
      geom_point(aes(color = size_band, 
                     group = size_band), 
                 size = 3, 
                 shape = size_band)
  }
}
plot.cities(Cities_list)

颜色变量未被识别:

Error in geom_point(aes(color = size_band, group = size_band), size = 3,  : 
  object 'size_band' not found 

【问题讨论】:

    标签: r function for-loop ggplot2


    【解决方案1】:

    颜色和形状等美学必须映射到aes 函数中。此外,函数plot.cities 必须返回一些东西,而不是分配一个内部变量p

    library(tidyverse)
    
    data <- tibble::tribble(
      ~City, ~size_band, ~variable, ~value,
      "Madrid", "1 to 3", "April 2020", 0.74,
      "Madrid", "4 to 6", "April 2020", 0.71,
      "Madrid", "7 to 9", "April 2020", 0.78,
      "Madrid", "10 to 12", "April 2020", 0.77,
      "Madrid", "13 to 15", "April 2020", 0.72,
      "Madrid", "1 to 3", "May 2020", 0.81,
      "Madrid", "4 to 6", "May 2020", 0.79
    )
    
    Cities_List <- split(data,
      f = data$City
    )
    
    # Function to plot different cities
    plot.cities <- function(x) {
      for (i in 1:length(Cities_List)) {
        x[[i]] %>%
          ggplot(aes(variable, value)) +
          geom_point(aes(color = size_band, shape = size_band), size = 3)
      }
    }
    plot.cities(Cities_List)
    

    reprex package (v2.0.1) 于 2021 年 12 月 14 日创建

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多