Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

function not recognising color variable in ggplot chart

I have a melted data frame relating to 22 cities and for each city there are 5 size bands. The variable column relates to dates. The data frame looks like this:

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

I’m trying to create a function that plots a time series using geom_point for each city. I’ve tried the below code:

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)

The color variable is not being recognised:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

>Solution :

aesthetics like color and shape must be mapped within the aes function. Furthermore, function plot.cities must return something instead of assigning an internal variable 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)

Created on 2021-12-14 by the reprex package (v2.0.1)

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading