如何根据 R tmap 中的属性值更改多边形的边框颜色
How to change the border color of a polygon based on an attribute value in R tmap
我正在尝试使用 R 的 tmap 包创建地图,该包对属性的每个值具有不同的颜色轮廓。例如,当填充多边形时,我可以简单地执行 tm_polygons(col = "variable") 以获得基于“variable”属性填充多边形的地图。我想做类似的事情,但只有边框,没有填充。我没有找到任何好的答案,所以我希望在这里得到一些帮助!
这里有一个例子可以说明这个想法:
library(tigris)
library(tmap)
library(tidyverse)
region_2 = states() %>% filter(REGION == 2)
states_of_interest = region_2 %>% filter(NAME %in% c("Ohio", "Missouri", "Wisconsin"))
tm_shape(region_2) + tm_polygons(col = "white") + tm_shape(states_of_interest) + .......
我不太确定如何进行
基本上,我希望俄亥俄州、密苏里州和威斯康星州的边界使用不同的颜色来区分它们,使用 states_of_interest
中的 NAME 属性。任何帮助将不胜感激!
一个潜在的解决方法是将您的 POLYGONS
转换为 LINESTRING
并继续 tm_lines()
:
library(tigris)
#> To enable caching of data, set `options(tigris_use_cache = TRUE)`
#> in your R script or .Rprofile.
library(tmap)
library(tidyverse)
region_2 = states() %>% filter(REGION == 2)
#> Retrieving data for the year 2020
#> | | | 0% | | | 1% | |= | 1% | |= | 2% | |== | 2% | |== | 3% | |== | 4% | |=== | 4% | |=== | 5% | |==== | 5% | |==== | 6% | |===== | 6% | |===== | 7% | |===== | 8% | |====== | 8% | |====== | 9% | |======= | 9% | |======= | 10% | |======= | 11% | |======== | 11% | |======== | 12% | |========= | 12% | |========= | 13% | |========= | 14% | |========== | 14% | |========== | 15% | |=========== | 15% | |=========== | 16% | |============ | 17% | |============ | 18% | |============= | 18% | |============= | 19% | |============== | 19% | |============== | 20% | |============== | 21% | |=============== | 21% | |=============== | 22% | |================ | 22% | |================ | 23% | |================= | 24% | |================= | 25% | |================== | 25% | |================== | 26% | |=================== | 27% | |==================== | 28% | |==================== | 29% | |===================== | 30% | |===================== | 31% | |====================== | 31% | |====================== | 32% | |======================= | 32% | |======================= | 33% | |======================= | 34% | |======================== | 34% | |======================== | 35% | |========================= | 35% | |========================= | 36% | |========================== | 37% | |========================== | 38% | |=========================== | 38% | |=========================== | 39% | |============================ | 39% | |============================ | 40% | |============================ | 41% | |============================= | 41% | |============================= | 42% | |============================== | 42% | |============================== | 43% | |=============================== | 44% | |=============================== | 45% | |================================ | 45% | |================================ | 46% | |================================= | 47% | |================================= | 48% | |================================== | 48% | |================================== | 49% | |=================================== | 49% | |=================================== | 50% | |==================================== | 51% | |==================================== | 52% | |===================================== | 52% | |===================================== | 53% | |====================================== | 54% | |====================================== | 55% | |======================================= | 55% | |======================================= | 56% | |======================================== | 57% | |======================================== | 58% | |========================================= | 58% | |========================================= | 59% | |========================================== | 59% | |========================================== | 60% | |=========================================== | 61% | |=========================================== | 62% | |============================================ | 62% | |============================================ | 63% | |============================================= | 64% | |============================================= | 65% | |============================================== | 65% | |============================================== | 66% | |=============================================== | 67% | |=============================================== | 68% | |================================================ | 68% | |================================================ | 69% | |================================================= | 70% | |================================================== | 71% | |================================================== | 72% | |=================================================== | 72% | |=================================================== | 73% | |=================================================== | 74% | |==================================================== | 74% | |==================================================== | 75% | |===================================================== | 75% | |===================================================== | 76% | |====================================================== | 76% | |====================================================== | 77% | |====================================================== | 78% | |======================================================= | 78% | |======================================================= | 79% | |======================================================== | 80% | |======================================================== | 81% | |========================================================= | 81% | |========================================================= | 82% | |========================================================== | 82% | |========================================================== | 83% | |=========================================================== | 84% | |=========================================================== | 85% | |============================================================ | 85% | |============================================================ | 86% | |============================================================= | 87% | |============================================================= | 88% | |============================================================== | 88% | |============================================================== | 89% | |=============================================================== | 90% | |=============================================================== | 91% | |================================================================ | 91% | |================================================================ | 92% | |================================================================= | 92% | |================================================================= | 93% | |================================================================== | 94% | |================================================================== | 95% | |=================================================================== | 95% | |=================================================================== | 96% | |==================================================================== | 97% | |==================================================================== | 98% | |===================================================================== | 98% | |===================================================================== | 99% | |======================================================================| 99% | |======================================================================| 100%
states_of_interest = region_2 %>%
filter(NAME %in% c("Ohio", "Missouri", "Wisconsin"))
states_lines <- states_of_interest %>% sf::st_cast("MULTILINESTRING")
tm_shape(region_2) +
tm_polygons(col = "white") +
tm_shape(states_lines) +
tm_lines(col="NAME", lwd=2)
由 reprex package (v2.0.1)
创建于 2022-03-21
我正在尝试使用 R 的 tmap 包创建地图,该包对属性的每个值具有不同的颜色轮廓。例如,当填充多边形时,我可以简单地执行 tm_polygons(col = "variable") 以获得基于“variable”属性填充多边形的地图。我想做类似的事情,但只有边框,没有填充。我没有找到任何好的答案,所以我希望在这里得到一些帮助!
这里有一个例子可以说明这个想法:
library(tigris)
library(tmap)
library(tidyverse)
region_2 = states() %>% filter(REGION == 2)
states_of_interest = region_2 %>% filter(NAME %in% c("Ohio", "Missouri", "Wisconsin"))
tm_shape(region_2) + tm_polygons(col = "white") + tm_shape(states_of_interest) + .......
我不太确定如何进行
基本上,我希望俄亥俄州、密苏里州和威斯康星州的边界使用不同的颜色来区分它们,使用 states_of_interest
中的 NAME 属性。任何帮助将不胜感激!
一个潜在的解决方法是将您的 POLYGONS
转换为 LINESTRING
并继续 tm_lines()
:
library(tigris)
#> To enable caching of data, set `options(tigris_use_cache = TRUE)`
#> in your R script or .Rprofile.
library(tmap)
library(tidyverse)
region_2 = states() %>% filter(REGION == 2)
#> Retrieving data for the year 2020
#> | | | 0% | | | 1% | |= | 1% | |= | 2% | |== | 2% | |== | 3% | |== | 4% | |=== | 4% | |=== | 5% | |==== | 5% | |==== | 6% | |===== | 6% | |===== | 7% | |===== | 8% | |====== | 8% | |====== | 9% | |======= | 9% | |======= | 10% | |======= | 11% | |======== | 11% | |======== | 12% | |========= | 12% | |========= | 13% | |========= | 14% | |========== | 14% | |========== | 15% | |=========== | 15% | |=========== | 16% | |============ | 17% | |============ | 18% | |============= | 18% | |============= | 19% | |============== | 19% | |============== | 20% | |============== | 21% | |=============== | 21% | |=============== | 22% | |================ | 22% | |================ | 23% | |================= | 24% | |================= | 25% | |================== | 25% | |================== | 26% | |=================== | 27% | |==================== | 28% | |==================== | 29% | |===================== | 30% | |===================== | 31% | |====================== | 31% | |====================== | 32% | |======================= | 32% | |======================= | 33% | |======================= | 34% | |======================== | 34% | |======================== | 35% | |========================= | 35% | |========================= | 36% | |========================== | 37% | |========================== | 38% | |=========================== | 38% | |=========================== | 39% | |============================ | 39% | |============================ | 40% | |============================ | 41% | |============================= | 41% | |============================= | 42% | |============================== | 42% | |============================== | 43% | |=============================== | 44% | |=============================== | 45% | |================================ | 45% | |================================ | 46% | |================================= | 47% | |================================= | 48% | |================================== | 48% | |================================== | 49% | |=================================== | 49% | |=================================== | 50% | |==================================== | 51% | |==================================== | 52% | |===================================== | 52% | |===================================== | 53% | |====================================== | 54% | |====================================== | 55% | |======================================= | 55% | |======================================= | 56% | |======================================== | 57% | |======================================== | 58% | |========================================= | 58% | |========================================= | 59% | |========================================== | 59% | |========================================== | 60% | |=========================================== | 61% | |=========================================== | 62% | |============================================ | 62% | |============================================ | 63% | |============================================= | 64% | |============================================= | 65% | |============================================== | 65% | |============================================== | 66% | |=============================================== | 67% | |=============================================== | 68% | |================================================ | 68% | |================================================ | 69% | |================================================= | 70% | |================================================== | 71% | |================================================== | 72% | |=================================================== | 72% | |=================================================== | 73% | |=================================================== | 74% | |==================================================== | 74% | |==================================================== | 75% | |===================================================== | 75% | |===================================================== | 76% | |====================================================== | 76% | |====================================================== | 77% | |====================================================== | 78% | |======================================================= | 78% | |======================================================= | 79% | |======================================================== | 80% | |======================================================== | 81% | |========================================================= | 81% | |========================================================= | 82% | |========================================================== | 82% | |========================================================== | 83% | |=========================================================== | 84% | |=========================================================== | 85% | |============================================================ | 85% | |============================================================ | 86% | |============================================================= | 87% | |============================================================= | 88% | |============================================================== | 88% | |============================================================== | 89% | |=============================================================== | 90% | |=============================================================== | 91% | |================================================================ | 91% | |================================================================ | 92% | |================================================================= | 92% | |================================================================= | 93% | |================================================================== | 94% | |================================================================== | 95% | |=================================================================== | 95% | |=================================================================== | 96% | |==================================================================== | 97% | |==================================================================== | 98% | |===================================================================== | 98% | |===================================================================== | 99% | |======================================================================| 99% | |======================================================================| 100%
states_of_interest = region_2 %>%
filter(NAME %in% c("Ohio", "Missouri", "Wisconsin"))
states_lines <- states_of_interest %>% sf::st_cast("MULTILINESTRING")
tm_shape(region_2) +
tm_polygons(col = "white") +
tm_shape(states_lines) +
tm_lines(col="NAME", lwd=2)
由 reprex package (v2.0.1)
创建于 2022-03-21