[英]R ::tmap plot and display NA values in legend
我想將點數據與鳥類計數的結果相對應。 點數的大小應根據被計數的鳥的數量進行縮放。 如果尚未計算面積,則應為NA值顯示x。 我該如何繪制這些數據並使用tmap包得到一個漂亮的圖例?
這是一個類似的示例:
rm(list=ls(all=TRUE))
library(tmap)
data(World, metro)
# put population size pop2020 to NA for some cities
metro$pop2020[10:300] <- NA
# add column with code for the shape of the symbol (21 for data available, 4 for NA)
metro$shape_symbol <- 21
metro[is.na(metro$pop2020), ]$shape_symbol <- 4
tm_shape(World) + tm_fill()+
tm_shape(metro) +
tm_symbols(
size = "pop2020",
col = "black",
shape = "shape_symbol", # use column shape_symbol in metro for the symbol
# shapeNA = "4", # should plot NA as cross by default - didn´t work for me
title.size = "subtitle",
legend.size.is.portrait=TRUE) +
tm_layout(legend.bg.color = "gray",
legend.frame = "black")
給出這個輸出。 為什么沒有顯示NA值? 以及如何達到良好的圖例輸出?
我的目標是達到以下目標:
鳥類的名稱應以加粗的圖例標題給出,並在下面的圖例符號上附加標簽“ Anzahl”。 理想情況下,NA的符號x應該這樣放置。 我可以從循環中粘貼(i)作為帶有title.size的圖例標題,但是如何在圖例中獲得第二個標題。 附加問題:我可以將點的大小設置為一定范圍嗎? 這樣,很小的數字在地圖上的大小就會達到最小?
我自己使用一種解決方法解決了它:
我添加了一個額外的層,並僅選擇了缺少值的數據。 然后,我使用tm_add_legend添加了另一個圖例元素。
data(World, metro)
# put population size pop2020 to NA for some cities
metro$pop2020[10:300] <- NA
tm_shape(World) + tm_fill()+
tm_shape(metro) +
tm_symbols(
size = "pop2020",
col = "black",
title.size = "subtitle",
legend.size.is.portrait=TRUE) +
tm_shape(metro[is.na(metro$pop2020),]) +
tm_dots(shape=4, size = 0.5, border.lwd = 0.5) +
tm_layout(legend.bg.color = "gray",
legend.frame = "black") +
tm_add_legend(type="symbol", shape =4, labels = "not available", size = 0.5, border.lwd = 0.5, col = "black")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.