添加一些行来在R中一个不同的Y轴barplot(Adding lines to barplot in

2019-08-17 09:46发布

我有以下简单的数据。 我希望绘制“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

Answer 1:

首先,你需要绘制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()



Answer 2:

updateusr在TeachingDemos包功能允许您更改现有图的坐标系统,而无需求助于par(new=TRUE)和随之而来的潜在问题。

您还可以看看twoord.plot在plotrix包作为另一种选择功能。

具有2坐标上相同的情节有时会导致混乱的系统中,可能是更好的创建垂直堆叠2条对准曲线,使得没有交叠和鳞是完全独立的,可能使顶情节短。 该layout功能可以用这种安排帮助。



文章来源: Adding lines to barplot in a different Y-axis in R
标签: r graphics plot