R 向ggplot2熔体数据添加错误条-长度必须为1或相同长度

R 向ggplot2熔体数据添加错误条-长度必须为1或相同长度,r,ggplot2,R,Ggplot2,我正在尝试为条形图创建错误条,我使用重塑2和融合数据创建了错误条。我收到下面的错误消息,真的不知道为什么!在我添加geom\u errorbar行之前,绘图效果非常好 gg <- melt(RootTree, id="Tr", na.rm = T) errors = aggregate(. ~ Tr, data=gg, FUN=sd) means = aggregate(. ~ Tr, data=gg, FUN=mean) x_melt <- melt(means, value.na

我正在尝试为条形图创建错误条,我使用重塑2和融合数据创建了错误条。我收到下面的错误消息,真的不知道为什么!在我添加
geom\u errorbar
行之前,绘图效果非常好

gg <- melt(RootTree, id="Tr", na.rm = T)
errors = aggregate(. ~ Tr, data=gg, FUN=sd)
means = aggregate(. ~ Tr, data=gg, FUN=mean)
x_melt <- melt(means, value.name="Mean")
y_melt <- melt(errors, value.name="SD")
datN1 <- merge(x_melt, y_melt)
ggplot(gg, aes(x=variable, y=value, fill=factor(Tr))) + 
  stat_summary(fun.y=mean, geom="bar",position=position_dodge(0.7)) + 
  scale_color_discrete("Tr") + 
  xlab("Seedlings")+
  ylab("Mean of Root Weight (gr)") + 
  scale_fill_manual(values=cbPalette, name="Treatment") + 
  ggtitle(" Root Weight of Seedlings by Treatment" ) +
  geom_errorbar(aes(ymin=datN1$Mean-datN1$SD,   ymax=datN1$Mean+datN1$SD), width=0.1)`

使用两个不同的数据帧进行绘图和错误不是问题。问题在于如何计算它们。您首先对数据进行
melt
ing,生成128个条目,对于错误/意味着您通过
Tr
进行聚合,这将为您提供5个条目,但您的数据有5x3个类别

可能的解决方案如下所示

您只能绘制
意味着
错误
。聚合将在
Tr
variable
上进行


gg使用两个不同的数据帧进行绘图和错误不是问题。问题在于如何计算它们。您首先对数据进行
melt
ing,生成128个条目,对于错误/意味着您通过
Tr
进行聚合,这将为您提供5个条目,但您的数据有5x3个类别

可能的解决方案如下所示

您只能绘制
意味着
错误
。聚合将在
Tr
variable
上进行


gg请提供样本数据,以获得更快、更准确的答案。您可以对数据使用dput()函数来输出一个结构,然后您可以将其复制/粘贴到问题中,这样我们就可以重现它。在
aes
中使用
$
总是一个坏主意。改用
数据
参数。未经测试无法确定,但
inherit.aes=FALSE
可能会有帮助,谢谢你们的快速回复!我已经按要求添加了示例数据,使用data参数而不是$似乎没有帮助。虽然添加
inherit.aes=FALSE
确实会产生一个简单的错误
错误:美学必须是长度1或与数据(128):ymin,ymax
相同。这可能是因为我使用两个不同的数据帧来制作条形图和错误条吗?请提供示例数据以更快地接收错误,更准确的答案。您可以对数据使用dput()函数来输出一个结构,然后您可以将其复制/粘贴到问题中,这样我们就可以重现它。在
aes
中使用
$
总是一个坏主意。改用
数据
参数。未经测试无法确定,但
inherit.aes=FALSE
可能会有帮助,谢谢你们的快速回复!我已经按要求添加了示例数据,使用data参数而不是$似乎没有帮助。尽管添加
inherit.aes=FALSE
确实产生了一个简单的错误
错误:美学必须是长度1或与数据相同(128):ymin,ymax
。这可能是因为我使用两个不同的数据帧来制作条形图和错误条吗?
     structure(list(Tr = structure(c(5L, 5L,    5L, 5L, 5L, 5L, 5L, 5L, 
     5L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 
     3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 
     1L, 1L, 1L, 1L, 1L), .Label = c("Control", "Gram", "Legu", "Mix", 
     "Topsoil"), class = "factor"), JP = c(2.59, 2.82, 2.8, 4.26, 
5.65, 7.01, 4.51, 3.27, 4.1, 4.73, 2.32, 5.09, NA, NA, NA, 1.47, 
2.26, 1.82, 1.31, 4.94, 2.64, 1.12, 2.51, 3.29, 1.83, 1.56, 3.05, 
1.98, 2.03, 2.95, 2.57, 2.1, 2.19, 2.92, 1.69, 2.24, 1.13, NA, 
NA, 1, 1.37, 1.65, 2.02, 2.47, 1.9), W = c(0.58, 0.4, 0.96, 0.47, 
0.69, 0.71, 0.61, 0.39, 0.34, 0.46, 0.13, 0.28, 0.31, 0.21, 0.14, 
0.65, 0.75, 0.19, 0.74, 1.8, 1.19, 1.74, 1.39, 0.6, 1.36, 1.91, 
0.5, 0.17, 0.25, 0.35, 0.77, 0.75, 0.33, 0.13, 0.14, 0.12, 0.18, 
0.29, 1.71, 1.18, 0.51, 0.99, 0.05, 0.36, NA), Ta = c(5.36, 2.8, 
4.46, 6.86, 2.05, 2.13, 2.94, 2.85, 3.26, 2.07, 2.5, 1.84, 2.07, 
2.5, 1.84, 3.66, 2.61, 1.8, 1.86, 2.89, 2.5, 1.8, 1.69, 1.83, 
4.97, 2.22, 3.93, 3.7, 2.58, 3.16, 4.01, 1.85, 2.91, 3.49, 2.96, 
NA, 1.53, 2.22, 2.53, 1.55, 1.58, 1.99, 0.54, 2.39, 0.85)), .Names = c("Tr", 
"JP", "W", "Ta"), class = "data.frame", row.names = c(NA, -45L
))
gg <- melt(RootTree, id="Tr", na.rm = T)
errors = aggregate(. ~ Tr + variable, 
                   data = gg, 
                   FUN = sd)
means = aggregate(. ~ Tr + variable, 
                  data = gg, 
                  FUN = mean)

ggplot(means, aes(x = variable, 
                  y = value,
                  fill = factor(Tr))) + 
  geom_bar(stat = 'identity', 
           position = position_dodge(0.7)) + 
  geom_errorbar(aes(ymin = means$value - errors$value,
                    ymax = means$value + errors$value),
                width = 0.3,
                position = position_dodge(0.7)) +
  xlab("Seedlings") +
  ylab("Mean of Root Weight (gr)") + 
  ggtitle("Root Weight of Seedlings by Treatment")