我试图绘制2个折线图并最后添加2个箱图。我想箱形图站在线图的末尾。为此我想扩展我的x轴没有任何标签,并将我的箱图放在我想要创建的这2个空白区域。
x轴格式化为日期。
xrange <- range(xjahredf$datum)
yrange <- range(xjahredf[,(names(xjahredf) != "datum")])
maxy <- max(yrange)
miny <- min(yrange)
# set up the plot
plot(xrange, yrange, bty = "l", type="n", xlab="Datum",ylab="werte", xaxt="n" )
axis.Date(side = 1, at=seq(xjahredf[1,1],xjahredf[37,1], length.out=12), format= "%Y-%m" , las=2)
colors <- c("red","blue")
boxplot(xjahredf$x1, axes=FALSE, range=0, ylim=c(miny,maxy), at=16450, add=TRUE, xpd=TRUE, lwd=0.5, col=colors[1], boxwex = 100)
boxplot(xjahredf$x3, axes=FALSE, range=0, ylim=c(miny,maxy), at=16500, add=TRUE, xpd=TRUE, lwd=0.5, col=colors[2], boxwex = 100)
for (i in 2:ncol(xjahredf)) {
lines(xjahredf$datum, xjahredf[,i], type="l", lwd=1.5,
lty=1, col=colors[i-1])
}
xjharedf是我的数据框,有3列(datum / x1 / x3)
数据格式化为日期(2012-12-1),然后我们在x1和x3中有一些值。 boxplot中的at = 16450定义了整个图中boxplot的位置,但是因为xaxis被格式化为日期,它从1970年的1jan开始计算日期(或类似的东西)
当我现在运行我的脚本时,我得到了我的2个glines,其中右轴为日期格式,2个重叠的箱图,最后1个是框架外...
P.S。我仍然是一个菜鸟,可能缺乏一些基本的知识!
答案 0 :(得分:0)
所以我们做了下面的工作。我确信有一种更简单的方法可以做到这一点。
我们从字符中的df格式化了日期列,并提供了一个字符向量作为axis函数中的标签。我们使得图的范围大于标签覆盖的区域,这使得我们在图的末尾带有空白空间。我们所做的就是把箱形图放在at =参数的相应位置。现在剩下的就是添加线条。希望这有任何帮助。
plot(c(0,40), yrange, bty = "l", type="n", xlab="Datum",
ylab="werte", xaxt="n")
axis(side = 1, at = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36),
labels = substr(c("2012-0sub1-01", "2012-02-01", "2012-03-01", "2012-04-01", "2012-05-01", "2012-06-01", "2012-07-01", "2012-08-01",
"2012-09-01", "2012-10-01", "2012-11-01", "2012-12-01", "2013-01-01", "2013-02-01", "2013-03-01", "2013-04-01",
"2013-05-01", "2013-06-01", "2013-07-01", "2013-08-01", "2013-09-01", "2013-10-01", "2013-11-01", "2013-12-01",
"2014-01-01", "2014-02-01", "2014-03-01", "2014-04-01", "2014-05-01", "2014-06-01", "2014-07-01", "2014-08-01",
"2014-09-01", "2014-10-01", "2014-11-01", "2014-12-01", "2015-01-01"),1,7), las=2)
colors <- c("red","blue")
boxplot(xjahredf$x1, axes=FALSE, range=0, ylim=c(miny,maxy), at=37, add=TRUE, xpd=TRUE, lwd=0.5, col=colors[1], boxwex = 2, alpha = 0.2)
boxplot(xjahredf$x3, axes=FALSE, range=0, ylim=c(miny,maxy), at=39, add=TRUE, xpd=TRUE, lwd=0.5, col=colors[2], boxwex = 2, alpha = 0.2)