如何在R

时间:2016-09-05 23:55:52

标签: r

首先,我确实尝试按照以下链接(以及其他一些谷歌努力......):

Grouped barplot in R with error bars

我的数据集非常小(R仍然让我对任何类型的编程都不熟悉)。 我的空间数据与假数据类似:

Site1 <- c(1, 2, 3, NA, 3, 4, 8, 1, 4)
Site2 <- c(2, 4, 8, 8, 2, NA, 1, 2, 5)
Site3 <- c(5, NA, 4, NA, 8, 1, 3, 4 ,6)
my.data <- cbind(Site1, Site2, Site3)
my.data <- cbind(Site1, Site2, Site3)
my.data <- data.frame(a = c("during", "during", "during", "during",     "after", "after", "after", "after", "after"), my.data)
colnames(my.data) <- c("time", "GA", "GI", "DI")

我想创建每个站点平均值的分组条形图,其中误差条表示1个标准差,其中“期间”和“之后”按站点(GA,GI,DI)分组。我试图通过创建手段数据框并绘制这些数据框来实现这一目标。哪个效果很好。除了我无法弄清楚如何添加错误栏。我将不胜感激任何帮助。我知道这是一个基本问题,但在编码时我处于小步骤。所以是的。

1 个答案:

答案 0 :(得分:1)

这应该解决它。请注意,我使用您提供的链接中的代码绘制了geom_errorbar。它似乎工作得相当好!

您的问题是您的数据形状不正确。完成this link一次

代码 -

Site1 <- c(1, 2, 3, NA, 3, 4, 8, 1, 4)
Site2 <- c(2, 4, 8, 8, 2, NA, 1, 2, 5)
Site3 <- c(5, NA, 4, NA, 8, 1, 3, 4 ,6)
my.data <- cbind(Site1, Site2, Site3)
my.data <- cbind(Site1, Site2, Site3)
my.data <- data.frame(a = c("during", "during", "during", "during","after", "after", "after", "after", "after"), my.data)
colnames(my.data) <- c("time", "GA", "GI", "DI")

library(reshape2)
library(dplyr)
data <- reshape(my.data,direction="long", varying=names(my.data)[-1],
                timevar="Site", times=names(my.data)[-1], v.names="value")
df <- data %>% 
  group_by(Site,time) %>%
  summarize(Mean=mean(value,na.rm=T),SD=sd(value,na.rm=T))

library(ggplot2)
ggplot(df, aes(x=Site,y=Mean,fill=time)) +
  geom_bar(position="dodge",stat="identity",color="black") +
  geom_errorbar(aes(ymin=Mean-SD,ymax=Mean+SD),width=0.2,position=position_dodge(0.9))

输出:

enter image description here