Общий заголовок, метки осей и условные обозначения в базе r с макетом

#r #layout #label #legend

Вопрос:

Спасибо за вашу помощь!

Я пытаюсь построить два временных ряда в одной и той же области рисунка, каждый со своим собственным названием, а затем с общим основным названием, метками по осям x и y и легендой справа. Я использую базу R для построения данных. Мне удалось заставить работать все, кроме легенды , с помощью par() , oma() , и mtext() , но единственный способ, которым я мог понять, как добавить легенду справа, — это использовать layout() и создать пустой участок в месте для легенды. Делая это таким образом, я получил два сюжета с общей легендой, но mtext() , похоже, они больше не работают. Я попытался изменить поля, чтобы освободить место для надписей заголовка и оси, но, похоже, они просто больше не отображаются. Глядя на stackoverflow, кажется, что люди используют mtext() и layout() вместе, но я не могу заставить его работать, даже если попытаюсь ввести mtext() команду сразу после графика. Вот изображение сюжета с легендой, но без заголовка и надписей на оси. Как добавить к этому общий заголовок и общие заголовки по осям x и y? Вот изображение сюжета с легендой, но без заголовка и надписей на оси

и вот мой код

 # set margins
par(mai=c(0.5,0.3, 0.2, 0), xpd=TRUE)

#layout plot areas
layout(matrix(c(1,2,3,3), nrow = 2), widths = c(2, 0.3))
layout.show(n=3)

#mfrow = c(2,1),

#plot elevation vs time at the battery
plot(battery_1999~newbatterytime_1999, 
     type="l", 
     ylab="Elevation (m, NAVD88)", 
     xlab="", 
     col="black", 
     xaxt="n")  
 
  #datetime axis labels by week
   axis.POSIXct(1, 
             at=seq(newbatterytime_1999[1],newbatterytime_1999[12475], by="week"), 
             format="%d-%b") 
  title("a. 1999", cex.main = 1.8, adj = 0, font.main = 4, line = 0.15)

#  add in lines for each well
lines(well1_1999~newwell1time_1999, col="red")
lines(well2_1999~newwell2time_1999, col="skyblue3")
lines(well3_1999~newwell3time_1999, col="skyblue1")
lines(well4_1999~newwell4time_1999, col= "skyblue")
lines(well5_1999~newwell5time_1999, col="slateblue")
lines(well6_1999~newwell6time_1999, col="slateblue2")
lines(well7_1999~newwell7time_1999, col="slateblue4")
lines(marshsurface_1999~newmarshsurfacetime_1999, 
      col="springgreen2"
      )

#plot elevation vs time at the battery
plot(battery_2019~newbatterytime_2019, 
     type="l", 
     ylab="Elevation (m, NAVD88)", 
     xlab="", 
     col="black", 
     xaxt="n")  
  
  #datetime axis labels by week
  axis.POSIXct(1, 
               at=seq(newbatterytime_2019[1],newbatterytime_2019[12475], by="week"), 
               format="%d-%b") 
  title("b. 2019", cex.main = 1.8, adj = 0, font.main = 4, line = 0.15)

#  add in lines for each well
lines(well1_2019~newwell1time_2019, col="red")
lines(well2_2019~newwell2time_2019, col="skyblue3")
lines(well3_2019~newwell3time_2019, col="skyblue1")
lines(well4_2019~newwell4time_2019, col= "skyblue")
lines(well5_2019~newwell5time_2019, col="slateblue")
lines(well6_2019~newwell6time_2019, col="slateblue2")
lines(well7_2019~newwell7time_2019, col="slateblue4")
lines(marshsurface_2019~newmarshsurfacetime_2019, 
      col="springgreen2"
)

# Create empty plot
plot(1, type = "n", axes=F, xlab="", ylab="") 

#add legend on right
legend("right", 
       #inset=c(5,0),
       legend=c("River","Levee","6m","12m","18m","24m","36m","48m","MarshnSurface"), 
       lty=c(1,1,1,1,1,1,1,1,1),seg.len=0.75, 
       col=c("black","red","skyblue3","skyblue1","skyblue","slateblue","slateblue2","slateblue4","springgreen2"),
       cex=1.5,
       bty="n"
)

# Title, x and y labels

mtext('Water Surface Elevation',
      line = .2, outer = TRUE, 
      cex = 1.8, font = 2)
mtext("Date",side=1,line=.5, outer=TRUE,cex=1.3)
mtext("Elevation (m, NAVD88)",side=2,line=1,outer=TRUE,cex=1.3,las=0)