2016-10-12 11 views
0

各国の色がデータフレーム内の変数の値に依存する世界地図をプロットしようとしています。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+を示します。

世界の地図でよりわかりやすくするために、値の低い多くの国の彩度をより適切に制御するにはどうすればよいですか? ありがとう

答えて

2

大半は、その美的に使用するための変換を指定trans引数を受け入れます。これにより、変換とラベル付けが自動的に処理されます。あなたの例では

、(あなたのデータは夫婦0値を持っているためだけではなく、"log"scale_gradient_nに引数にtrans = "log1p"を追加することに役立つ可能性があります。

+0

大きな前進です。ありがとうございました。凡例を変更して1から5ではなく0から330の範囲を表示するにはどうすればよいですか? – Sal

+0

'breaks'引数を使うことができます。あなたが@jdobresの答えである「scale_fill_gradientn(name = "Affiliatesの数"、trans = 'log1p'、colors = c( '#ff0000'、 '#cccccc'、 '#0000ff' )、値= c(0,30,331)/ 331、ブレーク= c(0,30,331)) ' –

+0

がそれを得ました。 'breaks'と' labels'引数を 'scale_fill_gradient'に入れるだけです – Sal

2

scale_fill_gradientnに電話をかけてみると、必要に応じて色が止まります。たとえば:ggplot2で連続scale機能の

scale_fill_gradientn(colours = c('#ff0000', '#cccccc', '#0000ff'), values = c(0, 30, 331)) 
+0

ありがとうございます。私は 'scale_fill_gradientn'を知りませんでした。 'values'引数で範囲を指定することはできますが、私は情報を見つけることができません。出来ますか ? – Sal

+0

あなたは余分な停留所を提供することで近くに近づくことができます。たとえば、 'values = c(0,30,35,320,331)、colors = c( 'red'、 'red'、 'red'、 'green'、 'green')' – jdobres

関連する問題