各国の色がデータフレーム内の変数の値に依存する世界地図をプロットしようとしています。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いるということですその国は色が濃く表示されていますが、値の低い国はすべて白で表示されているため、色のスケールは無用になります。
geom_map(aes(fill = value),…
をgeom_map(aes(fill = log(value)),…
に置き換えようとしましたが、この場合、凡例の縮尺は0〜330+の代わりに0〜5+を示します。
世界の地図でよりわかりやすくするために、値の低い多くの国の彩度をより適切に制御するにはどうすればよいですか? ありがとう
大きな前進です。ありがとうございました。凡例を変更して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