如何在 R 中修改多边形 spplot 的框架或填充?
How to modify frame or padding of a polygon spplot in R?
我正在使用 spplot
绘制等值线图。我的问题是图框默认情况下是紧密围绕地图绘制的(请参见下面的示例代码)。我想完全删除框架,但我不能使用选项 trellis.par.set(axis.line=list(col=NA))
,因为它也会遗漏图例的轴线。需要使用图例线才能清楚地阅读刻度,我的调色板还包括需要加框的白色。
作为快速修复,我尝试在 spplot 框架上添加一个(白色)多边形,但尽管使用了选项 under=F
:
但它仍绘制在框架下方
#Plotting dummy polygons
library(sp)
p1 <- Polygons(list(Polygon(cbind(c(13,15,20,20), c(8,13,14,8)))), "1")
p2 <- Polygons(list(Polygon(cbind(c(20,20,28,30), c(8,15,12,7)))), "2")
p3 <- Polygons(list(Polygon(cbind(c(15,20,25,22,18), c(8,8,7.5,0,2)))), "3")
polys <- SpatialPolygons(list(p1,p2,p3))
spdf <- SpatialPolygonsDataFrame(polys, data.frame(var1=c(1,4,8)))
spplot(spdf, col.regions=topo.colors(16))
#Adding an extra polygon to try to cover the frame
frame <- extent(spdf)
spplot(spdf, col.regions=topo.colors(16)) +
layer(sp.polygons(as(frame,'SpatialPolygons'), lwd=3, col=3, fill=NA), under=F)
#(using green here to actually see the box)
第二个最佳解决方案是将框架绘制得离地图更远。不幸的是,我只找到了关于如何修改外边距的说明,例如trellis.par.set(layout.heights=list(top.padding=3,bottom.padding=3))
,但我不知道如何控制 内部 边距(如果 spplot
图中有这样的东西)。
如能提供有关修改 spplot
中的框架或内边距的任何帮助,我们将不胜感激!
解决方案 1:将绘图面板的轮廓设置为透明,同时保持颜色键的轮廓为黑色
spplot(spdf, col.regions=topo.colors(16),
par.settings = list(axis.line = list(col = "transparent")),
colorkey = list(axis.line = list(col = "black")))
解决方案 2:填充 xlim
和 ylim
的范围
spplot(spdf, col.regions=topo.colors(16),
xlim = c(spdf@bbox["x", "min"] - 3,
spdf@bbox["x", "max"] + 3),
ylim = c(spdf@bbox["y", "min"] - 3,
spdf@bbox["y", "max"] + 3))
我正在使用 spplot
绘制等值线图。我的问题是图框默认情况下是紧密围绕地图绘制的(请参见下面的示例代码)。我想完全删除框架,但我不能使用选项 trellis.par.set(axis.line=list(col=NA))
,因为它也会遗漏图例的轴线。需要使用图例线才能清楚地阅读刻度,我的调色板还包括需要加框的白色。
作为快速修复,我尝试在 spplot 框架上添加一个(白色)多边形,但尽管使用了选项 under=F
:
#Plotting dummy polygons
library(sp)
p1 <- Polygons(list(Polygon(cbind(c(13,15,20,20), c(8,13,14,8)))), "1")
p2 <- Polygons(list(Polygon(cbind(c(20,20,28,30), c(8,15,12,7)))), "2")
p3 <- Polygons(list(Polygon(cbind(c(15,20,25,22,18), c(8,8,7.5,0,2)))), "3")
polys <- SpatialPolygons(list(p1,p2,p3))
spdf <- SpatialPolygonsDataFrame(polys, data.frame(var1=c(1,4,8)))
spplot(spdf, col.regions=topo.colors(16))
#Adding an extra polygon to try to cover the frame
frame <- extent(spdf)
spplot(spdf, col.regions=topo.colors(16)) +
layer(sp.polygons(as(frame,'SpatialPolygons'), lwd=3, col=3, fill=NA), under=F)
#(using green here to actually see the box)
第二个最佳解决方案是将框架绘制得离地图更远。不幸的是,我只找到了关于如何修改外边距的说明,例如trellis.par.set(layout.heights=list(top.padding=3,bottom.padding=3))
,但我不知道如何控制 内部 边距(如果 spplot
图中有这样的东西)。
如能提供有关修改 spplot
中的框架或内边距的任何帮助,我们将不胜感激!
解决方案 1:将绘图面板的轮廓设置为透明,同时保持颜色键的轮廓为黑色
spplot(spdf, col.regions=topo.colors(16),
par.settings = list(axis.line = list(col = "transparent")),
colorkey = list(axis.line = list(col = "black")))
解决方案 2:填充 xlim
和 ylim
spplot(spdf, col.regions=topo.colors(16),
xlim = c(spdf@bbox["x", "min"] - 3,
spdf@bbox["x", "max"] + 3),
ylim = c(spdf@bbox["y", "min"] - 3,
spdf@bbox["y", "max"] + 3))