有什么方法可以将调色板添加到尺寸美学中吗?
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)
我正在编写下一个代码: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)