编辑:添加了小df。
我有一个名为benthic_data的小型数据集,其中包含一些底栖无脊椎动物索引(下面只包含一个指标)。
Site <- c('S-7','S-7','S-7','S-7','S-7','S-27','S-27','S-27','S-27','S-27')
Sample <- c('S-7-1','S-7-2','S-7-3','S-7-4','S-7-5','S-27-1','S-27-2','S-27-3','S-27-4','S-27-5')
Abundance <- c(310, 316, 361,317, 321,108, 173, 189, 229, 210)
benthic_data <- data.frame(Site, Sample, Abundance)我已经将样本数据作为一个因素,并希望为每个样本生成一个点,然后是每个站点的平均值(带有标准偏差胡须)。
benthic_data$Sample = factor(benthic_data$Sample, levels=c('S-7-1', 'S-7-2','S-7-3','S-7-4','S-7-5','S-27-1','S-27-2','S-27-3','S-27-4', 'S-27-5'))站点及其各自的丰度值的基本图可以很好地工作(稍后我将使该图更漂亮):
ggplot(benthic_data, aes(x=Sample, y=Abundance, fill=Site))+
geom_point(data = benthic_data, size = 4.0, colour="black", shape=21, show.legend = F)+
scale_fill_manual(values = c("darkgreen", "orangered3"))

为了计算每个站点的平均值和SD,我使用了以下代码来尝试和因子每个站点,我还希望每个站点的平均值/sd点分别标记为S-7平均值和S-27平均值。
benthic_summary<- as.data.frame(benthic_data) %>%
group_by(Site) %>%
summarize(mean=mean(Abundance, na.rm=T),
sd=sd(Abundance, na.rm=T))
benthic_summary$Site = revalue(benthic_summary$Site, c("S-7" = "S-7 Mean","S-27"="S-27 Mean"))
benthic_summary$Site <- factor(benthic_summary$Site, levels= c("S-7 Mean","S-27 Mean"))现在,为了组合每个站点的5个点加上每个站点的平均值/sd,我使用了带有以下代码的geom_pointrange,但我在scale_fill_manual中添加了两种更多的颜色,因为我收到了这个错误消息:错误:手动刻度中的值不足。需要4个,但只提供了2个。
所以,这段代码工作得很好,除了,我需要先有S-7样本(它是一个上游站点),然后是S-27样本,图例不能反映正确的站点颜色。
站点S-7应为绿色,站点S-27应为橙色。
AEMP_cols=c("darkgreen", "orangered3")
ggplot(benthic_data, aes(x=Sample, y=Abundance, fill=Site))+
geom_point(data = benthic_data, size = 4.0, colour="black", shape=21, show.legend = F)+
scale_fill_manual(values = c("darkgreen","darkgreen", "orangered3", "orangered3"))+
geom_pointrange(data = benthic_summary, aes(x = Site, y=mean, ymin=mean-sd, ymax=mean+sd), colour = AEMP_cols, size =1, shape = 15)

因此,我想帮助弄清楚如何确保样本(点)在x轴上的顺序是: S-7-1,S-7-2……S-7-5,S7平均值,然后是S-27-1,S-27-2....S-27-5,S-27平均值。与上面创建的代码类似,但首先是S-7站点示例,然后是S-27示例。
我可以很容易地为其他索引重新创建代码,所以我现在只是从丰富开始。
任何帮助都将不胜感激。谢谢。
发布于 2020-03-26 04:25:01
你在找这样的东西吗?
我首先用计算出的每个站点的平均值生成第二个数据帧,然后将其添加为原始数据集的附加行。我重新组织了因子样本和站点的级别。我最终使用geom_point和geom_errorbar将它传递到了ggplot中
library(dplyr)
library(ggplot2)
Mean_DF <- benthic_data %>%
group_by(Site) %>%
summarise(Mean = mean(Abundance), SD = sd(Abundance)) %>%
mutate(Sample = c("S-27-Mean","S-7-Mean")) %>% rename(Abundance = Mean)
benthic_data %>% select(Site, Sample, Abundance) %>% bind_rows(., Mean_DF) %>%
mutate(Site = factor(Site, levels = c("S-7","S-27"))) %>%
mutate(Sample = factor(Sample, levels=c('S-7-1', 'S-7-2','S-7-3','S-7-4','S-7-5','S-7-Mean','S-27-1','S-27-2','S-27-3','S-27-4', 'S-27-5','S-27-Mean'))) %>%
ggplot(aes(x = Sample, y = Abundance, color = Site))+
geom_point()+
geom_errorbar(aes(ymin = Abundance-SD, ymax = Abundance+SD), width = 0.2)+
scale_color_manual(values = c("darkgreen", "orangered3"))

https://stackoverflow.com/questions/60855833
复制相似问题