如何为面板中的四个图设置光栅图例?

时间:2018-02-02 06:33:00

标签: r raster legend-properties

我完成了两个2层的光栅图,并且使用par(mfrow = c(2,2))完成了非常简单的工作,但是当设置一个常见的图例使得绘图变得混乱时,它总是与其他图重叠。我尝试更改一些参数值,但问题仍然存在。这是我的代码。

    library(maps)
library(raster)

# set colour
col<- colorRampPalette(c("grey","green","green3","darkgreen"))
#set panel for four plots    
par(mfrow=c(2,2),mar=c(2,2,2,2),oma=c(0,0,0,0))
#plot1
plot(novchl,col=col(20),legend =FALSE)
contour(novsst,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")
#plot2
plot(decchl,col=col(20),legend =FALSE)
contour(decsst,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")
#plot3
plot(janchl,col=col(20),legend =FALSE)
contour(jansst,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")
#plot4
plot(febchl,col=col(20),legend =FALSE)
contour(febsst,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")
reset para to single plot
par(mfrow=c(1,1),new=FALSE,mar=c(0,0,0,8))
plot(novchl,legend.only=TRUE ,legend.shrink=1, legend.width=1, zlim=c(0, 1),
     axis.args=list(at=pretty(0:1), labels=pretty(0:1)),col=col(20),
     legend.args=list(text='Whatever',"bottom", font=2, line=2.3))

我得到了像this.plz的图片帮助,提前谢谢

enter image description here

1 个答案:

答案 0 :(得分:1)

我只是在解决问题的重叠 -topic而不考虑布局中的任何其他更改(而不是解决警告消息)。要获得MWE,我使用栅格包中的test-grid数据。

我认为你几乎就在那里(在oma的调用中标记par个参数)......

在第一次调用oma时将par参数中的第四个条目设置为高于0的内容,以便在<{1}}上留出一些空间em>正确方面。然后,当将参数重置为单个图时,也将该值重置为例如0将图例放在空白处。像这样的东西

library(maps)
library(raster)

r <- raster(system.file("external/test.grd", package="raster"))

# set colour
col<- colorRampPalette(c("grey","green","green3","darkgreen"))
#set panel for four plots    
par(mfrow=c(2,2),mar=c(2,2,2,2),oma=c(0,0,0,4))
#plot1
plot(r,col=col(20),legend =FALSE)
contour(r,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")
#plot2
plot(r,col=col(20),legend =FALSE)
contour(r,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")
#plot3
plot(r,col=col(20),legend =FALSE)
contour(r,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")
#plot4
plot(r,col=col(20),legend =FALSE)
contour(r,maxpixels = 999,add=TRUE)
map(xlim=c(85, 93),ylim=c(2, 16 ),asp=1,add=TRUE,fill=TRUE,col="grey")

#reset para to single plot
par(mfrow=c(1,1),new=FALSE, oma=c(0,0,0,0))
plot(r,legend.only=TRUE ,legend.shrink=1, legend.width=1, zlim=c(0, 1),
     axis.args=list(at=pretty(0:1), labels=pretty(0:1)),col=col(20),
     legend.args=list(text='Whatever',"bottom", font=2, line=2.3))