#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)