簡體   English   中英

我可以在 R 中制作一個 map 來顯示兩個不同的分類變量(例如,收入和地區)嗎?

[英]Can I make a map in R which shows two different categorical variables (e.g., income and region)?

我正在嘗試制作美國的 map,它顯示兩個分類變量,例如 state 的收入組和 state 所屬的地區。這個想法是使用“填充”美學來顯示每個 state 的收入水平,然后是“顏色”美學來展示每個區域的輪廓。 我試圖傳達的信息是,低收入和高收入州集中在某些地區。

另一種方法是以某種方式顯示區域邊界,其邊界比 state 邊界更粗或更粗,但我也不確定如何執行此操作。 傳達相同信息的其他想法也將受到歡迎。

理想情況下,它將是以下兩個圖的某種組合:


## Create map data

state_map_data <- map_data("state")

state_regions <- tibble(state_name = tolower(state.name), state.region,
    as_tibble(state.x77)) %>%
        mutate(income_cat = cut(Income, breaks = 3,
        labels = c("low", "medium", "high")))

state_map_data <- state_map_data %>%
    left_join(state_regions,
        by = c("region" = "state_name"))

## Map with just income

p1 <- ggplot() +
    geom_polygon(data = state_map_data, 
                 aes(x = long, y = lat, group = group, 
                     fill = income_cat))
print(p1)

這會產生以下 map 收入

## Map with just regions

p2 <- ggplot() +
    geom_polygon(data = state_map_data, 
                 aes(x = long, y = lat, group = group, 
                     color = state.region))

print(p2)

這會生成以下帶有區域的 map

## Map with both

p <- ggplot() +
    geom_polygon(data = state_map_data, 
        aes(x = long, y = lat, group = group, 
            fill = income_cat)) +
    geom_polygon(data = state_map_data, 
        aes(x = long, y = lat, group = group, 
            color = state.region))

print(p)

這不會產生 map 的預期結果,其中按區域顯示顏色輪廓並按收入顯示填充狀態,如此處所示

您擁有代碼的方式是繪制兩組多邊形,其中state.region多邊形位於income_cat多邊形之上。 相反,您想繪制一組具有正確輪廓顏色填充顏色的多邊形:

ggplot() +
  geom_polygon(data = state_map_data, 
    aes(x = long, y = lat, group = group, 
        fill = income_cat, color = state.region)
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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