所以,我有这张表
Ccela Cviri Dfrag Pfict
S.obs 1759.00000 634.00000 747.00000 1714.00000
S.chao1 2610.80685 1374.29167 1192.63830 2192.72862
se.chao1 83.85972 122.35336 63.93822 55.99704
我希望通过 barplot2 或其他任何方式绘制,其置信区间与se.chao1
行以及S.obs
和S.chao1
相对应绘制为每列的组。
为此,我尝试使用barplot2()
,我已将最后一行解压缩为两个文件(ci.u
和ci.l
),并将其从上一个表中删除。这样,在向ci.l
和ci.u
添加空行后,我得到了3个具有相同尺寸的表格。
运行以下内容:
barplot2(new_barplot, legend = row.names(barplot_est.plot), beside=TRUE, plot.ci = TRUE, ci.l = ci.l[1,], ci.u = ci.u[1,], col=c("lightblue","lightcyan"))
我收到以下错误
barplot2.default出错(new_barplot,legend = row.names(barplot_est.plot),:'height'和'ci.u'必须有 相同的尺寸。
是否有其他方法可以使用 barplot2 ?
执行此操作如果没有,你能告诉我一个用 ggplots2 这样做的方法吗?
提前谢谢!
安德烈
答案 0 :(得分:0)
看到Max Ghenis建议的链接,这可能是一种方法。我先重新排列了你的数据。然后,我在绘制错误条时创建了limits
。
library(dplyr)
library(tidyr)
library(ggplot2)
data.frame(t(mydf)) %>%
add_rownames() %>%
gather(group, value, - c(rowname, se.chao1)) -> mydf2
limits <- aes(ymax = value + se.chao1, ymin = value - se.chao1)
g <- ggplot(data = mydf2, aes(x = rowname, y = value, fill = group)) +
geom_bar(position = "dodge", stat = "identity") +
geom_errorbar(limits, position = dodge, width = 0.25) +
labs(x = "Assign your name", y = "Value")
ggsave(g, file = "april12.png")
DATA
mydf <- structure(list(Ccela = c(1759, 2610.80685, 83.85972), Cviri = c(634,
1374.29167, 122.35336), Dfrag = c(747, 1192.6383, 63.93822),
Pfict = c(1714, 2192.72862, 55.99704)), .Names = c("Ccela",
"Cviri", "Dfrag", "Pfict"), class = "data.frame", row.names = c("S.obs",
"S.chao1", "se.chao1"))
修改
看到OP的评论,我做了以下事情。在此版本中,您只会看到S.chao1
的错误栏。
mutate(mydf2, se.chao1 = replace(se.chao1, which(group == "S.obs"), NA)) -> mydf3
dodge <- position_dodge(width=0.9)
ggplot(data = mydf2, aes(x = rowname, y = value, fill = group)) +
geom_bar(position = "dodge", stat = "identity") +
geom_errorbar(data = mydf3, aes(ymax = value + se.chao1, ymin = value - se.chao1),
position = dodge, width = 0.25) +
labs(x = "Assign your name", y = "Value")