Как использовать значения столбца, который был повернут в качестве оси в ggplot

#r #dataframe #ggplot2

Вопрос:

Я использовал следующий код для поворота area столбца и других столбцов в столбец variable :

 fire_cat2 <- fire_cat %>% 
  pivot_longer(
    cols = colnames(fire_cat)[5:13],
    names_to = 'variable',
    values_to = 'value'
  )
 

Я хотел бы построить график взаимосвязи между area значениями и значениями в других «столбцах».
Когда я запускаю следующий код, R выводит Error in FUN(X[[i]], ...) : object 'area' not found :

 fire_cat2 %>% 
  ggplot(aes(x = value, y = area))   
  geom_point()  
  facet_wrap(vars(variable), scales = "free_x")  
  labs(
    title = "Relationships between other variables and area burned",
    x = "Value of colum",
    y = "Area burned (hectare)"
  )
 

Решения показывают, что это правильный способ сделать это, поэтому я не уверен, почему это не работает.

*Редактировать — Вот вывод dput(head(fire_cat, 20)) :

 structure(list(X = c(7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 6, 6, 
6, 6, 5, 8, 6, 6), Y = c(5, 4, 4, 6, 6, 6, 6, 6, 6, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 4, 4), month = structure(c(3L, 10L, 10L, 3L, 
3L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 8L, 9L, 9L, 9L, 3L, 10L, 3L, 
4L), .Label = c("jan", "feb", "mar", "apr", "may", "jun", "jul", 
"aug", "sep", "oct", "nov", "dec"), class = "factor"), day = structure(c(6L, 
3L, 7L, 6L, 1L, 1L, 2L, 2L, 3L, 7L, 7L, 7L, 6L, 2L, 4L, 6L, 7L, 
2L, 4L, 7L), .Label = c("sun", "mon", "tue", "wed", "thu", "fri", 
"sat"), class = "factor"), FFMC = c(86.2, 90.6, 90.6, 91.7, 89.3, 
92.3, 92.3, 91.5, 91, 92.5, 92.5, 92.8, 63.5, 90.9, 92.9, 93.3, 
91.7, 84.9, 89.2, 86.3), DMC = c(26.2, 35.4, 43.7, 33.3, 51.3, 
85.3, 88.9, 145.4, 129.5, 88, 88, 73.2, 70.8, 126.5, 133.3, 141.2, 
35.8, 32.8, 27.9, 27.4), DC = c(94.3, 669.1, 686.9, 77.5, 102.2, 
488, 495.6, 608.2, 692.6, 698.6, 698.6, 713, 665.3, 686.5, 699.6, 
713.9, 80.8, 664.2, 70.8, 97.1), ISI = c(5.1, 6.7, 6.7, 9, 9.6, 
14.7, 8.5, 10.7, 7, 7.1, 7.1, 22.6, 0.8, 7, 9.2, 13.9, 7.8, 3, 
6.3, 5.1), temp = c(8.2, 18, 14.6, 8.3, 11.4, 22.2, 24.1, 8, 
13.1, 22.8, 17.8, 19.3, 17, 21.3, 26.4, 22.9, 15.1, 16.7, 15.9, 
9.3), RH = c(51, 33, 33, 97, 99, 29, 27, 86, 63, 40, 51, 38, 
72, 42, 21, 44, 27, 47, 35, 44), wind = c(6.7, 0.9, 1.3, 4, 1.8, 
5.4, 3.1, 2.2, 5.4, 4, 7.2, 4, 6.7, 2.2, 4.5, 5.4, 5.4, 4.9, 
4, 4.5), rain = c(0, 0, 0, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0), area = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0)), row.names = c(NA, -20L), class = c("tbl_df", 
"tbl", "data.frame"))
 

Комментарии:

1. Было бы полезно иметь образец вашего набора данных. Но если вы побежите unique(fire_cat2$variable) , вы, вероятно, обнаружите, что «область» была развернута в нее. Поскольку он больше не существует как отдельный столбец, ggplot не может его использовать.

2. Можете ли вы опубликовать примеры данных? Пожалуйста, отредактируйте вопрос с выводом dput(fire_cat) . Или, если он слишком велик с выходом dput(head(fire_cat, 20)) .

3. @RuiBarradas Я опубликовал примеры данных.

4. fire_cat2 не включает area в себя столбец.

Ответ №1:

Основная ошибка заключается в том, чтобы включить 13-ю колонку, area , в сводные столбцы. Решите ее, и код сработает.

 library(dplyr)
library(tidyr)
library(ggplot2)

fire_cat %>%
  pivot_longer(cols = 5:12, names_to = "variable") %>% 
  ggplot(aes(x = value, y = area))   
  geom_point()  
  facet_wrap(~ variable, scales = "free_x")  
  labs(
    title = "Relationships between other variables and area burned",
    x = "Value of column",
    y = "Area burned (hectare)"
  )
 

Ответ №2:

Это должно быть

 colnames(fire_cat)[5:12]