是否有一种“自动”方式在第一个下方添加第二个x轴?
我的数据与此类似:
A1=data.frame(dates=seq(as.Date("2000/1/1"), by="day", length.out=1080),obs=runif(1080,min=-10,max=15))
A2=data.frame(dates=seq(as.Date("2010/1/1"), by="day", length.out=1080),obs=runif(1080,min=-8,max=50))
par(new=T)
plot(A1,ylim=range(min(A1[,2],A2[,2]):max(A1[,2],A2[,2])))
par(new=F)
plot(A2,ylim=range(min(A1[,2],A2[,2]):max(A1[,2],A2[,2])))
我找到的唯一解决方案是手动制作。我有多个相同长度的时间序列,我想覆盖观察结果并保持x轴如下:
_________________________________________________
| | | | | |
2000 2001 2002 2003 2004 2005
2010 2011 2012 2013 2014 2015
2020 2021 2022 2023 2024 2025
(...)
每个时间序列都有不同的颜色。
答案 0 :(得分:1)
自动?不是我所知道的。
但我确实知道你可以(通过一些努力)手工完成这项工作。例如:
par(mar = c(10,4,4,2) + 0.1)
plot(1:3,1:3,axes = FALSE,xlab = "")
axis(1,1:3,labels = FALSE)
mtext(c('2000','2001','2002'),side = 1,line = 1,at = 1:3,col = "red")
mtext(c('2010','2011','2012'),side = 1,line = 2,at = 1:3,col = "blue")
mtext(c('2000','2001','2002'),side = 1,line = 3,at = 1:3,col = "red")
mtext(c('2010','2011','2012'),side = 1,line = 4,at = 1:3,col = "blue")
axis(2)
我通过设置mar
将底部边距中的行数增加到10,以演示如何确保每行轴标签有足够的空间。
然后绘制,省略轴,仅使用刻度线添加x轴,然后使用mtext
绘制每行文本标签。
如果您不需要每一行都是不同的颜色,则可以通过调用axis
来执行此操作,其中labels
参数由c("2000\n2010\n2020","2001\n2011\n2021","2002\n2012\n2022")
之类的向量组成然后摆弄padj
以使它们正确居中。