각 국가의 색상이 데이터 프레임의 변수 값에 의존하는 세계지도를 플롯하려고합니다.ggplot2 및 geom_map으로 코드화 된 세계지도
> affiliation
# A tibble: 252 × 2
region value
<chr> <dbl>
1 Aruba 0
2 Afghanistan 0
3 Angola 0
4 Anguilla 0
5 Albania 0
6 Finland 1
7 Andorra 0
8 United Arab Emirates 0
9 Argentina 2
10 Armenia 0
# ... with 242 more rows
코드는 내가 잘 작동이 있습니다
library(ggplot2)
library(ggthemes)
ggplot(affiliation, aes(map_id = region)) +
geom_map(aes(fill = value), map = worldMap, color='grey', size=0.3) +
expand_limits(x = worldMap$long, y = worldMap$lat) +
theme_few()+
theme(legend.position = "bottom",
axis.ticks = element_blank(),
axis.title = element_blank(),
axis.text = element_blank()) +
scale_fill_gradient(low="white", high="darkblue", name="Number of Affiliates") +
guides(fill = guide_colorbar(barwidth = 10, barheight = .5))
내 문제는 대부분의 값이 20 ~ 30 만 1 이상치 국가에서 거의 값은 0, 1 또는 2 한 점이다 값은 330으로 표시됩니다. 이렇게하면 국가가 색이 짙게 표시되고 값이 훨씬 낮은 모든 국가는 흰색으로 표시되므로 색조가 쓸모 없게됩니다.
geom_map(aes(fill = value),…
을 geom_map(aes(fill = log(value)),…
으로 바꾸려고했지만이 경우 범례의 눈금이 0에서 5+ (0-330 대신)로 표시됩니다.
세계지도에서 더 잘 보이게하기 위해 값이 낮은 많은 국가의 채도를 더 잘 제어하려면 어떻게해야합니까? 감사합니다.
앞으로 큰 걸음. 고맙습니다. 범례를 수정하여 1에서 5까지의 0에서 330까지의 범위를 표시하려면 어떻게해야합니까? – Sal
'breaks' 인수를 사용할 수 있습니다. 따라서 @jdobres의 답변 : 'scale_fill_gradientn (name = "Affiliates 수", trans ='log1p ', colors = c ('# ff0000 ','#cccccc ','# 0000ff ')의 색상을 사용하려면'), 값 = c (0, 30, 331)/331, 중단 = c (0, 30, 331)) ' –
알아 들었어. 'breaks'와'labels' 인수만을'scale_fill_gradient'에 넣습니다. – Sal