0

次のサンプル データとコードを使用して、世界地図を作成しています。

dF = read.table(text="
country, value
'France',  7
'United Kingdom',  64
'Italy',  68
'Sweden',  82
'Nepal',  85
'Japan',  86
'Germany',  86
'United States',  93
'China',  94
'Nigeria',  95"
, header=TRUE, sep=",")

library(rworldmap)

sPDF <- joinCountryData2Map(dF,
                            joinCode = "NAME",
                            nameJoinColumn = "country",
                            verbose = TRUE)

library(RColorBrewer)
colourPalette <- brewer.pal(7,'RdYlGn')
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette)

ただし、マップに塗りつぶされた色は連続した縮尺ではありません。イギリスはフランスとほぼ同じ色で表示されますが、価値観は大きく異なります。また、中国とアメリカでは値はほぼ同じですが、色が異なります。連続的なグラデーションスケールではなく、カテゴリ値のように色が塗りつぶされていると思います。brewer.pal の値を 7 からその他に変更しても役に立ちません。どうすればこれを修正できますか? ご協力いただきありがとうございます。


編集

dF他の人がデータフレームを再現するのに役立つdputを追加する

structure(list(country = c("France", "United Kingdom", "Italy", 
"Sweden", "Nepal", "Japan", "Germany", "United States", "China", 
"Nigeria"), value = c(7L, 64L, 68L, 82L, 85L, 86L, 86L, 93L, 
94L, 95L)), .Names = c("country", "value"), class = "data.frame", row.names = c(NA, 
-10L))
4

2 に答える 2

6

あなたの問題は、「変位値」である mapCountryData のデフォルトの catMethod を使用しているためです。catMethod を 'fixedWidth' に設定すると、希望に近い結果が得られると思います。

mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,catMethod='fixedWidth')

または、たとえば catMethod=c(0,20,40,60,80,100) でカテゴリの区切りを指定できます

colourPalette <- brewer.pal(5,'RdYlGn')
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,catMethod=c(0,20,40,60,80,100))

その後、必要に応じて、より詳細な凡例を追加できます。

mapParams <- mapCountryData(sPDF, nameColumnToPlot="value", colourPalette=colourPalette, catMethod=c(0,20,40,60,80,100), addLegend=FALSE)

do.call( addMapLegend, c( mapParams
                          , legendLabels="all"
                          , legendWidth=0.5 ))

それが役立つことを願っています。

于 2014-06-13T09:31:43.040 に答える
2

プロットの背後にある理由は、フランスの次の値が英国であり、さらに 10 か国があり、それらを 7 つのカテゴリに分割して、フランスと英国を同じ色のカテゴリにしたためです。デフォルトでは、mapCountryData はプロットに 7 つのカテゴリを使用します...

コードによって準備された次のチャート コードによって準備された次のチャート

カテゴリのみを提供するようにしてください。フォローしてみてください...

colourPalette <- brewer.pal(nrow(dF),'RdYlGn')
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette,numCats=nrow(dF))

カテゴリのみを導入して作成した以下のチャート カテゴリのみを導入して作成した以下のチャート


アップデート

低い値だけを赤くしたい場合 (この場合はフランス)

library(fields)
colourPalette = two.colors(n=max(dF$value)-min(dF$value)+1, start="red", middle='yellow', end="dark green", alpha=1.0)
colourPalette = colourPalette[dF$value - min(dF$value) + 1]
mapCountryData(sPDF,nameColumnToPlot="value",colourPalette=colourPalette, numCats=nrow(dF))

出力は次のようになります ここに画像の説明を入力

于 2014-06-13T05:19:04.717 に答える