#r #ggplot2
#ggplot2 #индексация #подмножество #точечная диаграмма #разброс
Вопрос:
Я работаю с подмножеством данных о погоде для загруженных данных метрополитена Хитроу. Этот набор данных не содержит пропущенных значений.
Используя ggplot, я хотел бы создать точечную диаграмму для максимальной температуры (tmax) для Хитроу, с данными за 2018 год, построенными на основе данных за 2019 год (см., Например, Ниже). Существует 12 точек данных как за 2018, так и за 2019 годы.
Я попытался сделать это с помощью приведенного ниже, однако это не работает. По-видимому, это связано с индексированием, поскольку код отлично работает, когда не пытается использовать индексы в функции aes ().
Как я могу заставить это работать?
2018Index lt;- which(HeathrowData$Year == 2018) 2019Index lt;- which(HeathrowData$Year == 2019) scatterlt;-ggplot(HeathrowData, aes(tmax[2018Index], tmax[2019Index])) scatter geom_point() scatter geom_point(size = 2) labs(x = "2018", y = "2019"))
Ответ №1:
Поскольку ваши данные в длинном формате, вам нужно немного поспорить с данными, чтобы поместить значения за ваши годы в отдельные столбцы, иначе говоря, вам нужно изменить формат ваших данных на широкий:
Используя некоторые случайные поддельные данные:
library(dplyr) library(tidyr) library(ggplot2) # Example data set.seed(123) HeathrowData lt;- data.frame( Year = rep(2017:2019, each = 12), tmax = runif(36) ) # Select, Filter, Convert to Wide HeathrowData lt;- HeathrowData %gt;% select(Year, tmax) %gt;% filter(Year %in% c(2018, 2019)) %gt;% group_by(Year) %gt;% mutate(id = row_number()) %gt;% ungroup() %gt;% pivot_wider(names_from = Year, values_from = tmax, names_prefix = "y") ggplot(HeathrowData, aes(y2018, y2019)) geom_point(size = 2) labs(x = "2018", y = "2019")