有什么方法可以将调色板添加到尺寸美学中吗?

Is there any way to add a color palette into the size aesthetic?

我正在编写下一个代码:ggplot()+ geom_sf(data = DPEst_DH, aes(size = di1a), col="orangered") 有效。

但是我想要一个彩色图例。

换句话说,我想在两种美学、大小和颜色上应用相同的字段,但保留一个图例。

...+ geom_sf(data = DPEst_DH, aes(color=di1a, size=di1a))

使用该代码行我有下一个输出,但我想知道是否有可能像上一个图像那样。

实现您想要的结果的一个选择是使您的 di1a 列成为离散变量,例如使用cut 并通过 scale_xxx_manual.

设置颜色和尺寸

使用 sf 包附带的 nc 形状文件作为示例数据:

library(ggplot2)
library(dplyr)

# Example data
nc_center <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE) %>% 
  sf::st_centroid() 

# Bin numeric variable
labels <- pretty(range(nc_center$AREA))
breaks <- c(labels, Inf)
nc_center <- nc_center %>% 
  mutate(area = cut(AREA, breaks = breaks, labels = labels, right = FALSE))

# Color and size palette
colors <- c("#132B43", "#56B1F7") # Default ggplot2 blue colors used for color gradient
pal <- colorRampPalette(colors)(length(labels))
pal_size <- seq(1, 6, length.out = 5) # c(1, 6): Default range for size scale

ggplot() +
  geom_sf(data = nc_center, aes(color = area, size = area)) +
  scale_color_manual(values = pal) +
  scale_size_manual(values = pal_size)