まず、mydata(121315 * 4)の一部です。
_ LONGITUDE LATITUDE NUM_PICKUPS TOTAL_REVENUE
1 121.6177 38.9124 21 337.0
2 121.8069 39.0210 16 454.7
3 121.5723 38.9645 38 696.9
4 121.6423 38.9258 622 13609.7
5 121.5647 38.9129 116 2016.7
6 121.6429 38.8846 120 2417.3
7 121.5852 38.9279 117 1975.0
8 121.6616 38.9189 94 1712.4
9 121.5812 38.9828 50 981.6
10 121.6411 38.9255 225 4696.2
_
それを見て、1列目と2列目は経度と緯度です。
_mydata[1,3]=21
_は、palce _(121.6177, 38.9124)
_に21個のピックアップがあることを意味します。
次に、mydataを_NUM_PICKUPS
_ descで再利用します。
_LONGITUDE LATITUDE NUM_PICKUPS TOTAL_REVENUE
121.6019 39.0181 14243 514716
121.5382 38.9609 13244 443754.7
121.5381 38.9609 9645 325056
121.5382 38.9608 8846 294345.6
121.602 39.0181 6556 232254.5
121.5383 38.9609 6152 208967.6
121.5383 38.9608 6014 207677.8
121.5381 38.9608 5544 185398.3
121.6018 39.018 4546 167662.1
121.5382 38.9607 4260 143088.9
121.5827 38.8948 4133 72202.8
121.6303 38.9183 3837 67683.6
121.5966 38.9665 3747 56378.7
_
そして、mydataの要約があります:
_summary(mydata)
LONGITUDE LATITUDE NUM_PICKUPS TOTAL_REVENUE
Min. :121.1 Min. :38.76 Min. : 10.00 Min. : 92.9
1st Qu.:121.6 1st Qu.:38.91 1st Qu.: 15.00 1st Qu.: 289.7
Median :121.6 Median :38.92 Median : 27.00 Median : 515.1
Mean :121.6 Mean :38.93 Mean : 57.03 Mean : 1067.6
3rd Qu.:121.6 3rd Qu.:38.96 3rd Qu.: 59.00 3rd Qu.: 1089.5
Max. :122.0 Max. :39.32 Max. :14243.00 Max. :514716.0
_
さて、_NUM_PICKUPS
_で色付けされた地図を描きたいのですが、コードを見てください。
_g1 <- ggplot() + geom_point(data = mydata,aes(x = LONGITUDE,y = LATITUDE,color=NUM_PICKUPS))
_
ええ、コードとグラフはどちらも正しいですが、colorを見てください。_num_pickups
_が高い場所を特定するのは難しいですか?そして、どこが少ないのですか?
scale_colour_gradient()
でコードを変更しようとしています。
_g1 + scale_colour_gradient(low = "red",high = "white")
_
しかし、写真を見てください、colorも分類するのが難しいです。
回目の試行:今回は、alpha=I(1/100)
およびbreaks()
のパラメーターを追加します:
_g1 <- ggplot() + geom_point(data = mydata,aes(x = LONGITUDE,y = LATITUDE,color=NUM_PICKUPS),alpha=I(1/100))
g1 + scale_colour_gradient(low = "red",high = "white", breaks=c(0,2000,4000))
_
しかし、それでも無力です!
4回目の試行:
_ggplot(data = mydata, aes(x = LONGITUDE,y = LATITUDE, color = NUM_PICKUPS)) + geom_point() + scale_colour_gradient(limits = c(0, 60))
_
5回目の試行: 3年前の投稿によると、 ggplot2カラースケールが外れ値の影響を受けています 、コードを再度変更しようとしています:
_mydata$NUM_PICKUPS1 <- "> 2000"
mydata$NUM_PICKUPS1[mydata$NUM_PICKUPS <= 2000] <- NA
g2 <- ggplot() + geom_point(data = subset(mydata,NUM_PICKUPS <= 2000),
aes(x = LONGITUDE,y = LATITUDE,color=NUM_PICKUPS),size=2) + geom_point(data = subset(mydata,NUM_PICKUPS > 2000),aes(x = LONGITUDE,y = LATITUDE,fill=NUM_PICKUPS1))
_
outliersで何かが変更されましたが、カラースケールはまだ分類が困難です。
それで、私の質問は、_NUM_PICKUPS
_の色を簡単に識別できるようにコードを変更する方法です。
私のコメントとあなたの回答によると、問題は、それらに対応するためにスケールを拡大することを余儀なくされているいくつかの外れ値があることだと思います。
summary()
から、_NUM_PICKUPS
_のケースの75%は10から59の間です。残りの25%は14243に増加し、3桁大きくなります。
要約すると、_NUM_PICKUPS
_の値の範囲は広すぎて、約1,000未満の変動を示すことはできません。
選択するソリューションは、データとそのデータで何をしたいかによって異なります。 1つのオプションは、75%までの値のみを表示し、最も高い25%を外れ値として除外することです。手動で制限を設定することで、データを変更せずにこれを行うことができると思います。
_g1 + scale_colour_gradient(limits = c(0, 60))
_
もう1つのオプションは、データを変換することです(おそらく、log()
またはlog10()
を使用します)。たとえば、mydata$LOG_PICKUPS <- log10(mydata$NUM_PICKUPS)
は、プロットするのに十分な範囲を縮小するのに役立つ場合があります。
ブレークがスケール全体に不均一に分布している(図3、NUM_PICKUPSの値4000が中央にある必要があります)を調整するには、制限とブレークのログを計算して、スケールの凡例の中心に配置する値:
scale_fill_gradient(
limits=c(lower, upper)^abs(log(0.5,mid)),
breaks=c(lower, mid, upper)^abs(log(0.5,mid)),
)
また、次のようにその式をデータに適用する必要があります。
ggplot(df, aes(x= x, y = y fill = z^abs(log(0.5,mid))))