2017-04-16 5 views
1

次のデータは、関連する収入との地理的なポイント数を表しますcexで自動的にサイズを変更するポイントを作成することはできますか?

df1 <- data.frame(lat = c(36.75, 46.21, 32.31, 29.5, 35.46), long = c(-88.79, -97.8, -106.79, -82.28, -97.51), revenue = c(15000, 10000, 4000, 30000, 12000)) 

次のコードは、地図上のポイントをプロット:

plot(map, xlim = c(-130, -65), ylim = c(35,40), asp = 1) 
points(df1$long, df1$lat, col="red", pch=16, cex=0.0003*df1$revenue) 

上記マップを作成するためには、私はしました「cex」と同等の収益* 0.0003となりました。

私は大量の収入を扱っているため、マップを視覚的に順応できるようにするためには、値を非常に小さい割合で掛ける必要があります。

ポイントが自動的に自然なサイズにリサイズされるように「1」、「2」、「3」などと入力するだけで自動的にポイントのサイズを変更できますか?現状では、私はこの仕事をするために非常に小さな数字で練習しなければなりません。

(参考のために、私はggplot2のプロットの「サイズ」機能の線に沿って何かを考えています。)

+1

何かでしょうか? – rawr

+0

@StephenKaroly:あなたが理解しているように、 'scales'パッケージはrawrの提案に必要です。既存のプロットを変更するには、より高いcexでポイントを再描画する必要があります。 –

答えて

0

あなたはこのような特定の範囲内に収まるようにcex値を制限することができます。私はコメントからscales::rescaleに慣れていないんだけど、多分これは同じことが `うろこ:: rescale`よう

# set the minimum and maximum cex values 
cex_min <- 1 
cex_max <- 4 

df1 <- data.frame(lat = c(36.75, 46.21, 32.31, 29.5, 35.46), long = c(-88.79, -97.8, -106.79, -82.28, -97.51), revenue = c(15000, 10000, 4000, 30000, 12000)) 

df1$revenue2 <- df1$revenue - min(df1$revenue) 
df1$proportion <- df1$revenue2/max(df1$revenue2) 
df1$cex_val <- cex_min + df1$proportion * (cex_max - cex_min) 

plot(map, xlim = c(-130, -65), ylim = c(35,40), asp = 1) 
points(df1$long, df1$lat, col="red", pch=16, cex=df1$cex_val) 
関連する問題