我对R(第三周)真的很陌生。我正在尝试绘制一个由10个地点组成的数据集,每个地点最多16个点,在3个不同的土壤深度。我的样本结果是2个电子受体DO和NO3的高,中和低。我想要绘制每个土壤深度的每个站点/地块的结果。可以单独完成,但如果有一种方法可以堆叠多个绘图,那就太棒了!(可能是非常高级的。)这是我的数据集的一个示例。
Site Plot DO(1m) DO(3m) DO(5m)
A 1 H H H
A 2 H H M
A 3 H L H
A 4 H H L
A 5 M H H
A 6 L H M到目前为止,我已经尝试过:
plot(factor(Plot),Site)
plot(Plot~factor(Site),DO 1m 我的想法是像在地图上绘制一样,以地点和地块作为我的坐标。如果可能的话,我更喜欢ggplot。
发布于 2020-01-31 02:45:36
根据你的数据,我认为一个很好的方式来呈现它将是一个“热图”。首先,我们可以将您的数据转换为更长的格式(我使用了tidyr中的pivot_longer来完成此操作),然后,我们可以使用ggplot中的geom_tile根据每个do的曲线图来创建每个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")

它看起来和你期望的一样吗?
示例Data
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>)https://stackoverflow.com/questions/59987865
复制相似问题