Rのコロプレス:カスタムブレークとプロット


13

コロプレスマップのプロットに関して質問があります。カスタムブレークを使用してマップをプロットする場合の推奨事項を教えてください。そして、それを少し魅力的に見せてください。

私のスクリプトでは、plotおよびspplotコマンドを使用して一部のデータを視覚化しましたが、結果に完全には満足していません。理由は簡単にわかります。spplotを使用して、異なる値の色を繰り返すカラーランプを取得しますが、これは少し奇妙です。カスタムブレークでプロットを使用すると、たとえばゼロ値がマップ上で白になるように、値の間隔を改善できませんでした。凡例とマップの間の歪んだ比率は、おそらくRstudioの結果だと思います。

だから私は誰かがカスタムブレークを使用してRでコロプレスマップをプロットするためのより良い提案があるのだろうか?

編集20-02-2013

示唆されたように、コロプレスマップを作成するためにggplot2を使用しました。以下のコードを使用しました。2つの問題が発生しました。1つは、データを強化した後、シェープファイルのすべてのデータがデータフレームに転送されるわけではないことです。したがって、データをマージできるように「id」変数の名前を変更する必要があります。軽微な問題。

より大きな問題は、データフレーム内のデータが正しいという事実にもかかわらず、ggplotはデータが正しくないマップを表示することです。凡例に応じた色の値は、データ内の変数の値と一致しません。ここで何かを見落としていますか?

# Plotting polygon shapefiles (try-out)
# Load the packages
require(rgdal)
require(maptools)
require(ggplot2)
gpclibPermit() # required for the fortify method
# Load the shapefile
africa=readOGR("/home/GIS",layer="africaII")
names(africa) 
# Load the data on conflict
conflict<-read.csv("africa_conflict.csv", header=TRUE)
names(conflict)
# Merge the data together
africadat<-merge(africa, conflict, by="ISO3")
# Changing the data in the shapefile
africa@data <- africadat
# Fortify so that ggplot can plot
africa.points = fortify(africa,region="ISO3")
# Change "id" to "ISO3"such that the datasets can be merged again
names(africa.points)[names(africa.points)=="id"]<-"ISO3"
africa.df=merge(africa.points,africadat,by="ISO3")
# Plot the data
ggplot(africa.df) + 
aes(long,lat,group=group) + 
geom_polygon(aes(fill =onset))+
geom_path(color="white") +
coord_equal()

複製データへのリンク

アップデート13-11-2015:シェイプファイル へのリンクを修正しました。コロプレスをプロットする方法については、以下の回答を参照してください。


5
またggplot2、コロプレスマップに使用することも検討します。デフォルトでは、出力の見た目が良くなっていると思います。
SlowLearner

シェイプファイルのlong / latデータは国境の輪郭ではなく、ポイントのみを指定しているため、ggplot2の使用については確信がありませんでした。したがって、コロプレスマップを作成するためにこれらのプロットを使用しました。私はRでのGISデータの処理にあまり詳しくないので、そのための本当に簡単なソリューションを見落としているかどうかはわかりません。
馬の

シェープファイルへのリンクを修正してください。
フグ

もちろん問題ありません。
馬の

回答:


6

上記のコードに問題はありませんが、には6つの明確なレベルがonsetあるので、連続変数としてではなく因子として扱います。factor以下のコードの呼び出しに注意してください。

ggplot(africa.df) +
  aes(long,lat,group=group) +
  geom_polygon(aes(fill = factor(onset)))+
  geom_path(color="white") +
  coord_equal()

そのコードは次の結果をもたらします。

元の

カスタム色が必要な場合は、これを試すことができます:

library(RColorBrewer)
my.cols <- brewer.pal(6, "Blues")

ggplot(africa.df) +
  aes(long,lat,group=group) +
  geom_polygon(aes(fill = factor(onset)))+
  scale_fill_manual("Onset\n", values = my.cols, guide = "legend") +
  geom_path(color="white") +
  coord_equal()

これはこれを生成します:

カスタムカラー


それでも間違った値をプロットします。とても独特です。
馬の

OK、例を使って問題の内容を正確に指定できますか?アンゴラが割り当てられている3ためonset、カラムおよびプロット3チャートインチ それはうまくいくようです。おそらく私は何かを見逃していますか?
SlowLearner

はい、ごめんなさい。アンゴラは正しい数少ないものの一つです。たとえば、南アフリカ、ナミビア、またはセネガルを見ると、色で示されている値がデータの値と一致していないことがわかります。したがって、セネガルは6(現在は2)、南アフリカ0(4)、ナミビアも0(1)である必要があります。ブルンジとルワンダもいくつか名を挙げています。では、リンクプロットは、私が正しい値を持つマップを示しspplotで作られました。このプロットは、シェープファイルから直接行われます。したがって、データフレームの作成で何かがうまくいかないと思います。
馬の

5

classIntパッケージには、数値データの間隔を計算するための多くの関数があります-インストールしてドキュメントを読んでください。


はい、classIntパッケージを固定ブレーク(スクリプトには表示されていません)で使用しましたが、問題は連続した数値データの間隔を計算することです。間隔は離散的ですが、イベントの頻度を表します。それを改善する方法をまだ見つけていません。
馬の

1

アーカイブについては、私が使用したソリューション:

#### Choropleth in R example ####

## Libraries
library(classInt)    
library(lattice)
library(RColorBrewer)    
library(sp)

## Shapefile for Sub-Sahara Africa (see link in Q)
africa<-readShapeSpatial("shp/africa.shp") 

## Add data to shapefile
# In this case the number of conflict onsets between 1981-2010
africa$onset<-c(3,0,3,1,3,1,4,2,3,0,
                2,0,3,1,1,0,2,1,1,1,
                2,0,3,0,1,0,0,4,2,1,
                3,0,1,0,6,1,3,1,1,0,
                0,1,1,0,0,0,0)

## Plot 
par(mar=c(1,4,1,1),family="serif")
trellis.par.set(axis.line=list(col=NA)) # Remove borders
spplot(africa,zcol="onset",col.regions=colorRampPalette(c("white","grey10"))(20),
main=list(label="Number of civil conflict onsets 1981-2010",cex=3),
pretty=T,par.settings=list(axis.text=list(cex=3)))

ここに画像の説明を入力してください


便利なマッピング機能を提供するR用のパッケージがあります。これは地図作成と呼ばれます(特に、ドキュメントに従ってコロプレスマップを許可します)。トピックから外れている場合(すでに答えを見つけたため)申し訳ありませんが、今後の参考のために言っておきましょう。
mgc

それはかなりいいですね。私は確かに他の仕事に試してみますので、参考に感謝します。
馬の
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.