#r #ggplot2
Вопрос:
Я хотел бы сгруппировать боковые диаграммы для данных из двух столбцов моей таблицы (az и iz), построив данные обоих столбцов рядом и сгруппировав их по местам обитания
Мой набор данных выглядит следующим образом:
habitat az iz
Gi 2,8 3,0
We 1,3 2,0
Mw 11,3 9,0
Htr 4,0 7,0
Gi 1,4 8,0
Mw 3,3 5,0
Mw 23,6 12,0
Gi 3,8 12,0
Gi 0,0 0,0
We 1,0 5,0
We 0,6 3,0
We 0,9 3,0
Mw 13,1 6,0
Mw 13,4 13,0
Mw 12,7 10,0
Htr 14,1 9,0
Htr 18,1 13,0
Htr 19,8 19,0
Мне удается отобразить данные только из одного столбца (iz), и я не вижу, как добавить данные из второго столбца (az)?
data$habitat <- factor(data$habitat , levels=c("We","Gi","Mw","Htr"))
ggplot(data, aes(x=habitat, y=iz, colour=habitat))
geom_boxplot()
Это дает мне схему для данных (iz)
Я не знаю, как добавить второй блок-график для данных az в соответствующие группы? Я нашел решения для группирования коробочных диаграмм по данным второго столбца, но я не нашел примера, в котором объяснялось бы, как добавлять данные из второго столбца в ту же группу.
Ответ №1:
library(tidyverse)
df %>%
mutate(habitat = factor(habitat , levels=c("We","Gi","Mw","Htr"))) %>%
pivot_longer(cols = -habitat) %>%
ggplot(aes(x = habitat, y = value, fill = name))
geom_boxplot()
Данные
structure(list(habitat = c("Gi", "We", "Mw", "Htr", "Gi", "Mw",
"Mw", "Gi", "Gi", "We", "We", "We", "Mw", "Mw", "Mw", "Htr",
"Htr", "Htr"), az = c(2.8, 1.3, 11.3, 4, 1.4, 3.3, 23.6, 3.8,
0, 1, 0.6, 0.9, 13.1, 13.4, 12.7, 14.1, 18.1, 19.8), iz = c(3,
2, 9, 7, 8, 5, 12, 12, 0, 5, 3, 3, 6, 13, 10, 9, 13, 19)), class = "data.frame", row.names = c(NA,
-18L))
Комментарии:
1. Отлично! Это то, что я ищу. Я вижу, что мне действительно нужно глубже погрузиться в R и tidyverse. Начал просто читать R4DS.
2. Рад, что это вам помогло! Если возможно, закройте этот вопрос, чтобы помочь дальнейшим поискам других пользователей
Ответ №2:
При попытке воспроизвести ваш код я всегда получаю следующую ошибку:
Error: Problem with `mutate()` column `habitat`.
ℹ `habitat = factor(habitat, levels = c("We", "Gi", "Mw", "Htr"))`.
x object 'habitat' not found
Я протестировал следующее и в результате получил точно такие же данные, которые Вы использовали.
> df <- data.frame(data_1$habitat,data_1$iz,data_1$az)
> dput(df)
structure(list(data_1.habitat = structure(c(2L, 1L, 3L, 4L, 2L,
3L, 3L, 2L, 2L, 1L, 1L, 1L, 3L, 3L, 3L, 4L, 4L, 4L), .Label = c("We",
"Gi", "Mw", "Htr"), class = "factor"), data_1.iz = c(3, 2, 9,
7, 8, 5, 12, 12, 0, 5, 3, 3, 6, 13, 10, 9, 13, 19), data_1.az = c(2.8,
1.3, 11.3, 4, 1.4, 3.3, 23.6, 3.8, 0, 1, 0.6, 0.9, 13.1, 13.4,
12.7, 14.1, 18.1, 19.8)), class = "data.frame", row.names = c(NA,
-18L))
Комментарии:
1. ОК. В моем случае мне нужно использовать data_1.habitat вместо просто среды обитания, чтобы получить желаемый результат. Теперь это работает.