2016-08-29 16 views
0

私は、各郡が2012年のオバマ票に占める割合で色分けされている米国の地図を作成しています。人口による郡のオーバーレイの不透明度を変更したいのですが(これは行われたのと同じです)here)私はalpha = populationVariableをgeom_map aesに追加しようとしましたが、運がありません。ggplot alter map第2変数による不透明度の塗りつぶし

ここは私の現在のコードです。誰かが私を正しい方向に向けることができますか?

gg <- ggplot() 
gg <- gg + geom_map(data=mapC, map=mapC, aes(x=long, y=lat, map_id=id, group=group, fill=mapC$proportionObama)) 
gg = gg+ scale_fill_gradient2(limits= c(0,100), name="Proportion of Votes for Obama", low="#E5000A", high="#0012BF",mid="#720964", midpoint=50) 
gg = gg + theme_map() +coord_equal() 
gg <- gg + geom_path(data = mapS, aes(long,lat, group=group), colour="gray50", size=.25) 
gg = gg + theme(legend.position="right") 
gg 
+2

'aes()'の中で '$'を使わないでください。主にこれを行うが、塗りつぶしマッピングは 'fill = proportionObama'でなければならない。いくつかの単純なケースでは動作しますが、より複雑なプロットではバグが発生します。 – Gregor

+1

再現可能な例を提供してください... –

+0

(1)SOはイメージを埋め込む方法を提供します。 (2) 'coord_map( 'polyconic')'を使ってconUS画像を表示するか、少なくとも 'coord_map()'と 'coord_equal()'を使用してください。 (3)アラスカ、ハワイ、プエルトリコもすべて投票され、あなたはそれらを除外しています。 (4)棒グラフを使用するだけではどうですか? – hrbrmstr

答えて

1

私はalphaggplotドキュメントは常に小数値を示して0と1の間であることをマッピングされています変数であることが必要だと思います。

あなたは、再現性のコードを持っているので、ここで動作するように見えた簡単なテストだったしません。

library(data.table) 
library(ggplot2) 


tmp = data.table(
    'x'=c(1,2,3), 
    'y'=c(1,2,3), 
    'z'=c(.1,.5,.8) 
) 

p = ggplot() 
p = p + geom_point(data=tmp , aes(x=x,y=y,alpha=z)) 
print(p) 
+1

ggplotは、任意の原子列をalphaの範囲に再マップします。私はこれが何を問題と関係があるのか​​よく分かりません。 – hrbrmstr

+0

私は自分の問題が私が(すべての郡の人口に比例して)非常に小さいアルファを使用していたということを信じています。 – Martin

+0

@Martin:hrbrmstrは正しいです。**すべての**アルファ値が小さい場合、それは重要ではないでしょう。あなたの問題は、値の範囲*が非常に大きいことですが、ほとんどすべての値は分布の下端にあります。 LA郡の人口は約10万人で、1M人未満の郡(3007郡のうち2990郡)は事実上見えません。より良い方法は、0-10k、10k-100k、100k-1M、1M-10Mのような対数ビンを使用することです。 – Gregor

関連する問題