我试图从以下数据(从ddply函数返回)创建一个分组条形图,其中x轴具有全部4个CWD变量(对于2个站点中的每个),y轴是平均值。如何使用ggplot和aes函数在R中创建分组条形图?
我的代码是:
library(plyr)
library(reshape2)
library(ggplot2)
ddply(data, c("Site","Plot","Cover"), summarise, mean=mean(Height), sd=sd(Height),
sem=sd(Height)/sqrt(length(Height)))
BranchSize <- ddply(data, c("Site","CWD"), summarise, mean=mean(Volume),
sd=sd(Volume), sem=sd(Volume)/sqrt(length(Volume)))
,并返回该表。这张表是数据框已经存在吗?还是我需要使它成为一个才能使用它?
Site CWD mean sd sem
1 High Bark 975.7273 2603.077 554.9780
2 High Branch 36827.7735 107668.064 13056.6706
3 High Cage 116041.4286 154934.888 58559.8832
4 High Log 73463.3636 121054.372 25808.8788
5 Low Bark 40.0000 NA NA
6 Low Branch 1323.8280 2304.571 595.0377
7 Low Cage 101.5000 NA NA
8 Low Log 102600.0000 NA NA
然后使用此代码:
limits <- aes(ymax = BranchSize$mean + BranchSize&se,
ymin=BranchSize$mean - BranchSize&se)
CWDVol<-ggplot(data = BranchSize,
aes(x = factor(CWD), y = mean, fill = factor(Site)))
CWDVol
当我运行此命令,出现在我的情节,但有没有酒吧。
后来,当我运行此:
CWDVol + geom_bar(stat = "identity", position_dodge(0.9)) +
geom_errorbar(limits, position = position_dodge(0.9), width = 0.25) +
labs(x = "CWD Type", y = "Average Volume") +
ggtitle("Average CWD Size in each Site") +
scale_fill_discrete(name = "Site")
我不断收到此错误: “错误:映射必须由aes()
或aes_()
创建”
任何提示将不胜感激。
尝试'STAT =“计数”'? – Jimbou
在'geom_bar'中通过'position = position_dodge(0.9)',在'limits'中,你做了这个:'BranchSize $ se',没有变量叫做'se'。另外,您不必包含'BranchSize $' – Sumedh
谢谢。我将统计数据更改为“计数”,并通过将“se”更改为“sem”来纠正我的错误,但它仍然无效。当我运行CWDVol时,它会生成一个没有任何条形图的图形 – Dominique