Автоматически? Не то, что я знаю.
Но я знаю, что вы можете (с некоторыми усилиями) сделать это вручную. Например:
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](https://i.stack.imgur.com/AiEX6.png)
Я увеличил количество строк в нижнем поле до 10, установив mar
, чтобы продемонстрировать, как можно обеспечить достаточно места для каждого ряда меток осей.
Затем вы строите график, опуская оси, добавляете ось x только с помощью галочек, а затем рисуете каждый ряд текстовых меток, используя mtext
.
Если вам не нужно, чтобы каждая строка была разного цвета, вы можете сделать это одним вызовом axis
, где аргумент labels
состоит из вектора, подобного c("2000\n2010\n2020","2001\n2011\n2021","2002\n2012\n2022")
, а затем перебираться с padj
для расположите их правильно по центру.