簡體   English   中英

R :: tmap繪圖並在圖例中顯示NA值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM