我有以下简单的数据。 我希望绘制“V”与D1,D2,D3的值作为并排侧杆曲线和累计总和,CS1,CS2,CS3为线,并在不同的纵向倍率。 虽然这是比较容易积并排侧栏图所示的第一个图 ,我发现很难添加线图的CS1-CS3列。 最后的情节看起来有点像第二张图的帮助谢谢
V D1 D2 D3 CS1 CS2 CS3
10 2038 1806 1643 72.81171847 64.52304394 58.69953555
20 550 709 757 92.46159343 89.85351911 85.7449089
30 142 192 271 97.53483387 96.71311183 95.42693819
40 45 61 80 99.14255091 98.89246159 98.28510182
50 12 20 30 99.57127546 99.6070025 99.35691318
60 5 6 10 99.74991068 99.82136477 99.71418364
70 2 2 3 99.82136477 99.89281886 99.82136477
80 4 1 2 99.96427295 99.92854591 99.89281886
90 1 0 1 100.0000000 99.92854591 99.92854591
100 0 1 0 100.0000000 99.96427295 99.92854591
首先,你需要绘制barplot并将其保存为对象。 这个对象包含酒吧X坐标。 作为最大值是39.5,我设置xlim=c(0,40)
mp<-barplot(as.matrix(t(df[,2:4])),beside=TRUE,xlim=c(0,40),ann=FALSE)
mp
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1.5 5.5 9.5 13.5 17.5 21.5 25.5 29.5 33.5 37.5
[2,] 2.5 6.5 10.5 14.5 18.5 22.5 26.5 30.5 34.5 38.5
[3,] 3.5 7.5 11.5 15.5 19.5 23.5 27.5 31.5 35.5 39.5
要添加新的情节使用par(new=TRUE)
然后加plot()
的第一行和lines()
的其他线路。 作为新图的x值所使用的第二线mp
对象(midle柱)。 功能axis()
用于设置轴蜱。
par(new=TRUE)
plot(mp[2,],df$CS1,xlim=c(0,40),type="l",col="red",axes=FALSE,ylim=c(0,100),ann=FALSE)
lines(mp[2,],df$CS2,col="blue")
lines(mp[2,],df$CS3,col="green")
axis(1,at=mp[2,],labels=df$V)
axis(4,at=seq(0,100,10))
box()
该updateusr
在TeachingDemos包功能允许您更改现有图的坐标系统,而无需求助于par(new=TRUE)
和随之而来的潜在问题。
您还可以看看twoord.plot
在plotrix包作为另一种选择功能。
具有2坐标上相同的情节有时会导致混乱的系统中,可能是更好的创建垂直堆叠2条对准曲线,使得没有交叠和鳞是完全独立的,可能使顶情节短。 该layout
功能可以用这种安排帮助。