为 sf 对象的绘图设置色标限制
set color scale limits for plot of sf object
我想在相同的色标上绘制多个 sf 对象。在 raster 包中,有一个非常方便的 zlim
参数,您可以在其中指定颜色限制。但我不知道 sf::plot().
中的等价物是什么
在这里,我加载了一个 sf 多边形并创建了一个额外的虚拟变量来说明我的问题:
library(sf)
nc_sf <- st_read(system.file("shape/nc.shp", package="sf"))
nc_sf$AREA2 <- nc_sf$AREA * 2
range(nc_sf$AREA)
range(nc_sf$AREA2)
plot(nc_sf["AREA"])
plot(nc_sf["AREA2"])
这些图具有独立的色标。
我可以用 ggplot 做到这一点:
library(ggplot2)
fullrange <- range(c(nc_sf$AREA, nc_sf$AREA2))
fullrange
ggplot() + geom_sf(data = nc_sf, aes(fill = AREA), lwd = 0.5, color = 'black') + scale_fill_gradientn(colours = sf.colors(), limits = fullrange)
ggplot() + geom_sf(data = nc_sf, aes(fill = AREA2), lwd = 0.5, color = 'black') + scale_fill_gradientn(colours = sf.colors(), limits = fullrange)
但是我如何使用 sf::plot 做到这一点?
您可以使用自定义 breaks
:
library(sf)
nc_sf <- st_read(system.file("shape/nc.shp", package="sf"))
nc_sf$AREA2 <- nc_sf$AREA * 2
fullrange <- c(nc_sf$AREA, nc_sf$AREA2)
mybreaks <- seq(min(fullrange), max(fullrange), by = diff(range(fullrange))/10)
plot(nc_sf["AREA"], breaks=mybreaks)
plot(nc_sf["AREA2"], breaks=mybreaks)
由 reprex package (v0.3.0)
于 2020-07-08 创建
我想在相同的色标上绘制多个 sf 对象。在 raster 包中,有一个非常方便的 zlim
参数,您可以在其中指定颜色限制。但我不知道 sf::plot().
在这里,我加载了一个 sf 多边形并创建了一个额外的虚拟变量来说明我的问题:
library(sf)
nc_sf <- st_read(system.file("shape/nc.shp", package="sf"))
nc_sf$AREA2 <- nc_sf$AREA * 2
range(nc_sf$AREA)
range(nc_sf$AREA2)
plot(nc_sf["AREA"])
plot(nc_sf["AREA2"])
这些图具有独立的色标。
我可以用 ggplot 做到这一点:
library(ggplot2)
fullrange <- range(c(nc_sf$AREA, nc_sf$AREA2))
fullrange
ggplot() + geom_sf(data = nc_sf, aes(fill = AREA), lwd = 0.5, color = 'black') + scale_fill_gradientn(colours = sf.colors(), limits = fullrange)
ggplot() + geom_sf(data = nc_sf, aes(fill = AREA2), lwd = 0.5, color = 'black') + scale_fill_gradientn(colours = sf.colors(), limits = fullrange)
但是我如何使用 sf::plot 做到这一点?
您可以使用自定义 breaks
:
library(sf)
nc_sf <- st_read(system.file("shape/nc.shp", package="sf"))
nc_sf$AREA2 <- nc_sf$AREA * 2
fullrange <- c(nc_sf$AREA, nc_sf$AREA2)
mybreaks <- seq(min(fullrange), max(fullrange), by = diff(range(fullrange))/10)
plot(nc_sf["AREA"], breaks=mybreaks)
plot(nc_sf["AREA2"], breaks=mybreaks)
由 reprex package (v0.3.0)
于 2020-07-08 创建