我在试图绘制一个盒子图时出错了。它说我没有指定组变量,但是正如您所看到的,我指定了。但我不知道为什么这个错误会不断出现。有什么想法吗?
ggplot(fl_n_net, mapping = aes(x = Season, fill = Habitat, group = interaction(Season, Habitat),
lower = mean(Modularity) - sd(Modularity),
upper = mean(Modularity) + sd(Modularity), middle = mean(Modularity),
ymin = mean(Modularity) - 3 * sd(Modularity), ymax = mean(Modularity) + 3 * sd(Modularity))) +
geom_boxplot(stat = "identity", position = position_dodge(width = 0.1))
Error: Can't draw more than one boxplot per group. Did you forget aes(group = ...)?我的数据就是这样的:

发布于 2022-08-16 10:46:37
这里的问题是,您正在尝试总结aes中的每个组,这是您无法做到的。当您这样做时,例如middle = mean(Modularity),这并不是针对您的每个框计算的,而只是对您的所有框应用了大平均值。在使用group_by和summarize对数据进行分组和汇总的过程中,而不是试图完成ggplot中的所有操作。
library(tidyverse)
fl_n_net %>%
group_by(Season, Habitat) %>%
summarize(ymin = mean(Modularity) - 3 * sd(Modularity),
ymax = mean(Modularity) + 3 * sd(Modularity),
lower = mean(Modularity) - sd(Modularity),
upper = mean(Modularity) + sd(Modularity),
middle = mean(Modularity)) %>%
ggplot(aes(x = Season, fill = Habitat)) +
geom_boxplot(stat = 'identity',
aes(fill = Habitat, ymin = ymin, ymax = ymax,
lower = lower, middle = middle, upper = upper))

数据使用
显然,我们没有可以使用的格式的数据,因此我为上面的示例创建了一个示例数据集。你显然不需要这个部分:
set.seed(1)
fl_n_net <- data.frame(
Season = rep(c('Spring', 'Summer', 'Autmun', 'Winter'), each = 15),
Habitat = rep(rep(c('Desert', 'Tundra', 'Rainforest'), each = 5), 4))
fl_n_net <- within(fl_n_net,
Modularity <- rnorm(60, as.numeric(factor(Season)) *
as.numeric(factor(Habitat))))https://stackoverflow.com/questions/73372191
复制相似问题