2017-05-31 6 views
0

マップとggplot2パッケージを使用してRでChoroplethマップを取得しようとしています。興味深いのは、具体的な国とその具体的な価値を表しているだけです。私のデータは次のとおりです:Choroplethマップの問題

GEO<-c("ES","GB","FR","DE","DK","AT","PT") 
Value<-c(0.2560,0.023,0.0120,0.158,0.0025,0.158,0.2) 
countries=c("Spain","Great Britain","France","German","Denmark","Austria","UK") 
datar<-data.frame(GEO,Value,countries) 

datar $ GEOは、国のISO 2コード名に対応しています。

私はこのスクリプトを使用して階級区分図を得る:

ここ
mapa<-fortify(map(regions=datar$countries,col="grey20",fill=TRUE,plot=FALSE)) 

gg <- ggplot() 
gg <- gg + geom_map(data=mapa, map=mapa, 
       aes(x=long, y=lat, map_id=region), 
       fill="white", color="black") 
gg<- gg +geom_map(data=datar, map=mapa, 
       aes(map_id=countries,fill=Value),color="blue",size=0.25) 
gg <- gg + coord_map() 
gg <- gg + theme_bw() 
gg 

マップ: enter image description here

まず問題はすりおろ英国が絵ではないということです。私はその名称を「英国」に変更しようとしました。それは、それがナミビアではなくイギリスを代表するので最悪です。私は英国の正しい名前を検索しようとしますが、何も見つかりませんでした!誰かが知っている? datar $ GEOはプロットも生成しません[エラーen seq_len(nrow(data) - 1):引数は負ではない整数と可逆でなければなりません]

秒。私は0から0.5の赤で色のスケールを作成したいと思います。どこでどのようにすればいいですか?

最後に、緯度と経度の数字を背景線と四角形とともに削除できますか?

ありがとうございます!

+0

'map()'関数はどこから来たのですか?使用する外部パッケージを含める必要があります – GGamba

+0

map()はマップパッケージ – Cebs

答えて

2

実際には簡単な修正があります。 データ。frame()は、デフォルトで文字ベクトルを因子に変更します。これは、さまざまな方法でコードを混乱させる可能性があります。おそらく、そのことについての警告を参照してください。

Warning message: 
In `[<-.factor`(`*tmp*`, iexp, value = "UK$)|(^UK:") : 
    invalid factor level, NA generated 

だから確かに、あなたは「英国」または「イギリス」の代わりに「英国」を使用する必要がありますが、ナミビアは

datar <- data.frame(GEO,Value,countries, stringsAsFactors=FALSE) 
を使用することによって回避することができます

このような要因のエラーは、英国では「英国」と「英国」のハックな修正のためにのみ表示されます。マップの次のリリース(3.2)でそれを修正します。

1

geom_map()私はそれを学びました。

英国の正しいコードは確かにUKですが、他の国とは逆に、サブリージョンがあります。 UKを検索すると、NAが返され、これは(奇妙な)NAmibiaを返します。
解決策はUK:を検索することです。

Btwの場合、fortify(map(..))の代わりにmap_data()を使用できます。

library(ggplot2) 
library(maps) 

datar <- data.frame(GEO = c("ES","UK","FR","DE","DK","AT","PT"), 
        Value = c(0.2560,0.023,0.0120,0.158,0.0025,0.158,0.2), 
        search_countries = factor(c("Spain","UK:","France","Germany","Denmark","Austria", "Portugal")), 
        countries = c("Spain","UK","France","Germany","Denmark","Austria", "Portugal") 
) 

mapa <- map_data('world', region = datar$search_countries) 

彼らはもともとあったように我々はまだmapadatarに参加するために、countries列を必要としています。

ggplot() + 
    geom_map(data = mapa, map = mapa, aes(x = long, y = lat,map_id = region)) + 
    geom_map(data = datar, map = mapa, aes(fill = Value, map_id = countries), color ='black', size = .25) + 
    coord_map() 
#> Warning: Ignoring unknown aesthetics: x, y 

geom_mapすごみが出てくるところです。しかし、おそらくあなたはおそらく、あなたが正確に2つのgeom_mapと必要な警告についての奇妙さをプロットしていることを知っているでしょう。x & y美学。


行うには最後のものは、充填スケールを修正し、必要のないテーマの要素を削除することです(あなたがtheme_void()を使用して同じ結果を得ることができます)

last_plot() + 
    scale_fill_gradient(low = 'white', high = 'red', limits = c(0, .5)) + 
    theme(panel.background = element_rect(colour = 'black', fill = 'white'), 
     axis.line = element_blank(), 
     axis.ticks = element_blank(), 
     axis.text = element_blank(), 
     axis.title = element_blank()) 

+0

から来ます。どうもありがとう! – Cebs

+1

コロン "UK:"を必要とするコメントとして:これは実際には "uk"自体が "ukrain"(これは20年前に "uk"互換性を保つために、map 3.xはplain "uk"をgeom_map()と混同して "NA"という結果になる醜い正規表現に変えます。 –

関連する問題