基于 geom 而不是 ggplot 美学的图例
Legend based on geom rather than aesthetic with ggplot
这里的想法是用同样的审美为每个geom
画一个图例。在下面的示例中,生成的图例假设这两个不同的层具有相同的比例,从而产生了这张地图。
因此,我希望图表中的图例一分为二,因此我可以为每一层更改 scale_fill_*
。
我知道这个解决方案:,但我正在寻找一种更优雅和可扩展的方法来做到这一点。
library(tidyverse)
library(sf)
library(geobr)
mun <- map(11:12, read_municipality) %>%
map(mutate, index = seq_along(code_muni), .before = geom)
mun[[2]] <- mun[[2]] %>%
mutate(index = index + 100)
mun <- mun %>%
map(
~mutate(.x, index = cut(index, quantile(index), include.lowest = TRUE))
)
ggplot() +
geom_sf(data = mun[[1]], aes(fill = index)) +
geom_sf(data = mun[[2]], aes(fill = index))
谢谢。
听起来好像您正在寻找 ggnewscale
包,它允许多个尺度和指南以实现相同的审美:
library(tidyverse)
library(sf)
library(geobr)
library(ggnewscale)
pal1 <- scales::hue_pal()(8)[1:4]
pal2 <- scales::hue_pal()(8)[5:8]
ggplot() +
geom_sf(data = mun[[1]], aes(fill = index)) +
scale_fill_manual(values = pal1) +
new_scale_fill() +
geom_sf(data = mun[[2]], aes(fill = index)) +
scale_fill_manual(values = pal2)
这里的想法是用同样的审美为每个geom
画一个图例。在下面的示例中,生成的图例假设这两个不同的层具有相同的比例,从而产生了这张地图。
因此,我希望图表中的图例一分为二,因此我可以为每一层更改 scale_fill_*
。
我知道这个解决方案:,但我正在寻找一种更优雅和可扩展的方法来做到这一点。
library(tidyverse)
library(sf)
library(geobr)
mun <- map(11:12, read_municipality) %>%
map(mutate, index = seq_along(code_muni), .before = geom)
mun[[2]] <- mun[[2]] %>%
mutate(index = index + 100)
mun <- mun %>%
map(
~mutate(.x, index = cut(index, quantile(index), include.lowest = TRUE))
)
ggplot() +
geom_sf(data = mun[[1]], aes(fill = index)) +
geom_sf(data = mun[[2]], aes(fill = index))
谢谢。
听起来好像您正在寻找 ggnewscale
包,它允许多个尺度和指南以实现相同的审美:
library(tidyverse)
library(sf)
library(geobr)
library(ggnewscale)
pal1 <- scales::hue_pal()(8)[1:4]
pal2 <- scales::hue_pal()(8)[5:8]
ggplot() +
geom_sf(data = mun[[1]], aes(fill = index)) +
scale_fill_manual(values = pal1) +
new_scale_fill() +
geom_sf(data = mun[[2]], aes(fill = index)) +
scale_fill_manual(values = pal2)