1

我正在尝试在 R 中生成一个类似于

![](http://imgur.com/Srt9L_png)

包含来自两个不同数据集的数字的列交错。我已经完成了大部分困难的事情,我正在使用这段代码

library(gplots)
meang7 <- c(355.8303, 241.9443, 253.2399, 356.4712, 779.6908, 1444.0087, 1215.7648)
meang4 <- c(196.97559, 185.70940, 190.80855, 165.82834, 190.64914, 152.46845, 85.21208)
SEMg7 <- c(20.13935, 20.74347, 19.35914, 28.60324, 53.02302, 84.71020, 86.93199)
SEMg4 <- c( 9.469664, 7.515927, 12.500072, 10.379942, 4.455329, 15.124991, 6.888774)
barg7 <- barplot(meang7, main="C. Sapidus 35-22 ppt",     names.arg=c(0,6,12,24,48,96,168),ylim=c(0,1700), col="gray", axis.lty=1, xlab="Time Post     Transfer (hr)", ylab="CA Activity (μmol CO2 mg protein−1 min−1)")
barg4 <- barplot(meang4, col="blue", add=TRUE)
plotCI(x=barg7, y=meang7, uiw=SEMg7, lty=1, gap=0, add=TRUE)
plotCI(x=barg4, y=meang4, uiw=SEMg4, lty=1, gap=0, add=TRUE)

要得到

这么远 在此处输入图像描述

但我不知道如何使列交错而不是重叠。任何帮助表示赞赏。

4

2 回答 2

2

这里是。您需要将两个向量按行组合成一个矩阵,并使用以下beside参数barplot()

library(gplots)
meang7 <- c(355.8303, 241.9443, 253.2399, 356.4712, 779.6908, 1444.0087, 1215.7648)
meang4 <- c(196.97559, 185.70940, 190.80855, 165.82834, 190.64914, 152.46845, 85.21208)
SEMg7 <- c(20.13935, 20.74347, 19.35914, 28.60324, 53.02302, 84.71020, 86.93199)
SEMg4 <- c( 9.469664, 7.515927, 12.500072, 10.379942, 4.455329, 15.124991, 6.888774)
barg <- barplot(matrix(c(meang7,meang4),nrow=2,byrow=TRUE), main="C. Sapidus 35-22 ppt", names.arg=c(0,6,12,24,48,96,168), ylim=c(0,1700), col=c("gray","blue"), axis.lty=1, xlab="Time Post Transfer (hr)", ylab="CA Activity (μmol CO2 mg protein−1 min−1)", beside=TRUE)
plotCI(x=barg[1,], y=meang7, uiw=SEMg7, lty=1, gap=0, add=TRUE)
plotCI(x=barg[2,], y=meang4, uiw=SEMg4, lty=1, gap=0, add=TRUE)
于 2013-01-08T21:03:58.910 回答
0

首先,您需要使用 reshape 包将数据重塑为更有用的长格式。

library(reshape)
library(ggplot2)
meang7 <- c(355.8303, 241.9443, 253.2399, 356.4712, 779.6908, 1444.0087, 1215.7648)
meang4 <- c(196.97559, 185.70940, 190.80855, 165.82834, 190.64914, 152.46845, 85.21208)
SEMg7 <- c(20.13935, 20.74347, 19.35914, 28.60324, 53.02302, 84.71020, 86.93199)
SEMg4 <- c( 9.469664, 7.515927, 12.500072, 10.379942, 4.455329, 15.124991, 6.888774)
hours <- as.factor(c(0,6,12,24,48,96,168))
d <- data.frame(m7=meang7, m4=meang4, hours=hours )
d <- melt(d, measure.vars=c("m7", "m4"))
d$se <- c(SEMg7, SEMg4)

使用标准误差为误差线创建限制并使用 ggplot 绘图:

limits <- aes(ymax=d$value + d$se, ymin=d$value - d$se)
ggplot(d, aes(x=hours, y=value, fill=variable)) + geom_bar(stat="identity", position="dodge") + geom_errorbar(ymax=d$value + d$se, ymin=d$value-d$se) + scale_y_continuous(limits=c(0, 1600))
于 2013-01-08T21:03:49.550 回答