我很难绘制sf
点对象。
基本上,我想根据变量显示带有黑色边框和填充颜色的点。
在基准图中,我将用不同的背景颜色来施加边框颜色:
plot(1:3, cex = 3, pch = 21, col = 'red', bg = c('blue', 'green', 'yellow'), lwd = 2)
我使用pch = 21
以便用bg
颜色填充点,同时使用col = 'red'
作为点边界颜色。
使用sf
对象,我可以使用col
施加边框颜色,但图例消失(根据plot {sf}
的文档说明,如果col
被传递给了功能不显示图例。
library(sf)
# example
df <- data.frame(est = c('A', 'B', 'C'),
long = c(-70, -68, -69),
lat = c(-12.2, -12.4, -12),
RMSE = c(25, 8, 55)) %>%
st_as_sf(coords = c('long', 'lat'), crs = 4326)
# reclassifying the RMSE variable:
df$rmse_cut <- cut(df$RMSE, c(0,15,30,45,60))
# plotting the map
plot(df['rmse_cut'], main = 'RMSE', graticule = TRUE, axes = TRUE,
bgc = 'gray92',
pch = 21, lwd = 2, cex = 3,
col = 'black',
bg = c('blue', 'green', 'yellow'))
但是在没有col
的情况下进行绘制:
plot(df['rmse_cut'], main = 'RMSE', graticule = TRUE, axes = TRUE,
bgc = 'gray92',
pch = 21, lwd = 2, cex = 3,
bg = c('blue', 'green', 'yellow'))
边框由变量rmse_cut
排序,但是背景颜色是固定的。
在使用背景色显示来自rmse_cut
变量的不同值时,如何在点边界上使用单一颜色?
答案 0 :(得分:3)
记住基本图!您需要对调色板进行整理以使其一致,然后调用值引用的调色板:
plotpal <- sf.colors(nlevels(df[['rmse_cut']]),categorical=TRUE)
plot(df['rmse_cut'], main = 'RMSE', graticule = TRUE, axes = TRUE, bgc = 'gray92',
type="n", pal=plotpal, key.pos=1, reset=FALSE)
plot(df[['geometry']], pch = 21, lwd = 2, cex = 3, bg=plotpal[df[['rmse_cut']]], add=TRUE)
答案 1 :(得分:1)