2

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

在此处输入图像描述

但我想要一个有色传奇。

换句话说,我想在两种美学、尺寸和颜色上应用相同的领域,但保留一个图例。

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

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

在此处输入图像描述

4

1 回答 1

2

实现您想要的结果的一种选择是di1a使用例如使您的列成为离散变量cut,并通过设置颜色和大小scale_xxx_manual

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

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)

于 2021-09-18T06:47:42.280 回答