Основываясь на ваших данных, я думаю, что хорошим способом представить это будет «тепловая карта». Сначала мы можем перевести ваши данные в более длинный формат (для этого я использовал pivot_longer
из tidyr
), затем мы можем использовать geom_tile
из ggplot
, чтобы создать тепловую карту оценки каждого DO на основе их сюжет.
Преимущество этого представления заключается в том, что, поскольку мы приписываем показатель в качестве значения заполнения, он автоматически создает цветовую схему в ggplot2
. Итак, нам не нужно конвертировать символьный формат в числовой формат. Если вы хотите изменить цветовой рисунок, вы можете использовать scale_fill_manual
.
. Вы можете написать что-то вроде этого:
library(tidyr)
library(ggplot2)
library(dplyr)
df %>% pivot_longer(.,-c(Site, Plot), names_to = "DO",values_to = "Score") %>%
ggplot(aes(x = as.factor(Plot), y = DO, fill = Score))+
geom_tile(color = "black")+
geom_text(aes(label = Score))+
scale_y_discrete(labels = c("1m","2m","5m"))+
labs(x = "Plot", title = "Site A")
Это выглядит так, как вы ожидаете?
Пример данных
structure(list(Site = c("A", "A", "A", "A", "A", "A"), Plot = 1:6,
`DO(1m)` = c("H", "H", "H", "H", "M", "L"), `DO(3m)` = c("H",
"H", "L", "H", "H", "H"), `DO(5m)` = c("H", "M", "H", "L",
"H", "M")), row.names = c(NA, -6L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x56276b4f1350>)