所以假設我有這個示例代碼
require(sf)
require(ggplot2)
tmp1 <- tempfile()
tmp2 <- tempfile()
download.file("http://api.thenmap.net/v2/se-4/geo/2020-06-03", destfile = tmp1)
download.file("http://api.thenmap.net/v2/se-7/geo/2020-06-03", destfile = tmp2)
county <- read_sf(tmp1)
county$id <- as.numeric(county$id)
county$id[5] <- NA
ggplot(county)
geom_sf(aes(fill = id))
scale_fill_viridis_c()
theme_void()
在此示例中,我只是將瑞典各縣的 ID 用作“資料”(用于連續標度),并且我還有一個隨機選擇的 NA 值。
但是,我希望將 sf 物件中 id 為 10 和 21 的縣手動設定為紅色,因為它們是我資料中的例外值,我想將其可視化。但我不希望這兩個縣改變其他縣的規模,即我希望連續規模在 1-20 之間(就像現在一樣),但在我的資料中,它們的值假設為 100,所以我不不希望這些例外值影響非例外值資料的規模并保持規模不變。
我試圖將物件的經度和緯度值提取到一個資料框中,并將兩個縣按 1 和 2 分組。然后繪制它,但它不起作用,因為它將被視為離散資料(我理解為什么),即將其添加到 ggplot代碼
geom_polygon(data=large, aes(x=lng, y=lat, fill= "red", group=id), colour="black")
我怎么解決這個問題?
uj5u.com熱心網友回復:
一個快速的選擇是添加第二geom_sf層,您僅使用ids 10 和 21 的資料并為其設定fill="red":
library(sf)
library(ggplot2)
tmp1 <- tempfile()
tmp2 <- tempfile()
download.file("http://api.thenmap.net/v2/se-4/geo/2020-06-03", destfile = tmp1)
download.file("http://api.thenmap.net/v2/se-7/geo/2020-06-03", destfile = tmp2)
county <- read_sf(tmp1)
county$id <- as.numeric(county$id)
ggplot(county)
geom_sf(aes(fill = id))
geom_sf(data = subset(county, id %in% c(10, 21)), fill = "red")
scale_fill_viridis_c()
theme_void()

或者使用相同的方法,您可以添加紅色。例外區域周圍的彩色輪廓:
ggplot(county)
geom_sf(aes(fill = id))
geom_sf(data = subset(county, id %in% c(10, 21)), color = "red", linewidth = 1, fill = NA)
scale_fill_viridis_c()
theme_void()

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/536936.html
標籤:r图表2地理信息系统
