Наложить графики и держать 2 оси X - PullRequest
1 голос
/ 17 февраля 2012

Существует ли "автоматический" способ добавления второй оси 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])))

Единственное решение, которое я нашел, былосделать это вручную.У меня есть несколько временных рядов одинаковой длины, и я хотел бы наложить наблюдения и сохранить ось х следующим образом:

_________________________________________________
  |        |       |        |        |        |
2000     2001     2002     2003     2004     2005  
2010     2011     2012     2013     2014     2015
2020     2021     2022     2023     2024     2025
(...)

каждый временной ряд с другим цветом.

1 Ответ

1 голос
/ 17 февраля 2012

Автоматически? Не то, что я знаю.

Но я знаю, что вы можете (с некоторыми усилиями) сделать это вручную. Например:

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)

enter image description here

Я увеличил количество строк в нижнем поле до 10, установив mar, чтобы продемонстрировать, как можно обеспечить достаточно места для каждого ряда меток осей.

Затем вы строите график, опуская оси, добавляете ось x только с помощью галочек, а затем рисуете каждый ряд текстовых меток, используя mtext.

Если вам не нужно, чтобы каждая строка была разного цвета, вы можете сделать это одним вызовом axis, где аргумент labels состоит из вектора, подобного c("2000\n2010\n2020","2001\n2011\n2021","2002\n2012\n2022"), а затем перебираться с padj для расположите их правильно по центру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...