如何在一个地块上放置多个绘图

时间:2014-05-06 09:59:02

标签: r

我有以下数据:

x = structure(list(y1 = c(107.372719264016, 118.863299513623, 122.162515227, 
111.233227509519, 92.1059066900521, 92.5830204386651, 94.5195626032137, 
104.412959061795, 91.3601725324563, 109.253785952959, 178.771878945058, 
144.951255075154, 155.596668292633, 174.961110441768, 120.832044563506, 
136.643512128174, 135.187051040663, 180.285899983425, 158.394853261036, 
159.408612698416, 210.922565904703, 200.637214897327, 212.170348364241, 
189.17609660446, 196.488287848291, 190.289086295862, 209.437584230891, 
213.663792465693, 212.051141677785, 178.19577259738), gp = c(1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3), y2 = c(23.4346699162695, 23.5659769309565, 
25.6831595647438, 26.2750453870631, 27.4124437247719, 26.6151271841002, 
18.3542500476327, 25.6479059225537, 22.7590841129755, 28.3977047665418, 
49.5381487676808, 52.6323571458394, 52.0978945491726, 47.9337311261507, 
40.2061776362212, 59.8929725029682, 55.0611040997365, 54.3854566071441, 
45.3167212599129, 49.4203766938382, 65.3710290649776, 83.0698942827895, 
89.5332774858779, 71.9625027199287, 85.8762119093763, 69.1433238492174, 
84.390713674473, 83.6843406930946, 75.1866926526086, 80.4928087390204
)), .Names = c("y1", "gp", "y2"), row.names = c(NA, -30L), class = "data.frame")
> 
> head(x)
         y1 gp       y2
1 107.37272  1 23.43467
2 118.86330  1 23.56598
3 122.16252  1 25.68316
4 111.23323  1 26.27505
5  92.10591  1 27.41244
6  92.58302  1 26.61513
> 

> 
> plotmeans(x$y1~x$gp)
> plotmeans(x$y2~x$gp)

我想在一个图上用相同的组列绘制2列的平均值。我可以制作2块地块,但我怎样才能将它们放在一块地块上?我不想要par(mfrow ..)函数,但想要在同一个图上使用相同y轴的两个图。 'plotmeans'功能在gplots包中。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

一般来说,你可以这样做:

plotmeans(x$y1~x$gp,ylim=c(0,220))
plotmeans(x$y2~x$gp,add=TRUE)

会返回警告(您可以忽略),因为add=TRUE参数会传递给plot()(不使用它)和plotCI()(它确实使用它) )。在您的数据的特定情况下,您会收到额外的警告,因为置信区间太小而无法正确绘制 - 您可以通过绘制对数刻度来绘制圆形,或者如果对数据有意义则使用较小的y范围 - 既不其中对我来说特别好:

#Smaller y range
plotmeans(x$y1~x$gp,ylim=c(60,120))
plotmeans(x$y2~x$gp,add=TRUE)

#log scale
plotmeans(x$y1~x$gp,ylim=c(20,220),log='y')
plotmeans(x$y2~x$gp,add=TRUE)

如果这些都不令人满意,您可以尝试绘制到2000x2000像素的设备 - 例如

    png("file.png",2000,2000) 
    plotmeans(x$y1~x$gp,ylim=c(0,220))
    plotmeans(x$y2~x$gp,add=TRUE)
    dev.off()

足够大,可以正确显示错误条。