人口の正味の変化を示すレイヤーを含むggplot
一連のベースマップを表示するために使用しています。stat_summary_hex
の値を再スケーリングするには、とによって生成されscale_fill_gradientn
た を知る必要があります。min
max
..value..
stat_summary_hex
簡単な例を次に示します。
Hex_Summary <- stat_summary_hex(aes(x = Lon, y = Lat, z = Churn),
bins=100, colour = NA, geom = "hex", fun = function(x) sum(x))
関数によって生成される最小値と最大値を取得するために、次のことを試しましたfun
。
PlotEnv <- ggplot() + HexSummary
PlotData <-ggplot_build(PlotEnv)
BinnedValues <- PlotData[["data"]][[1]]$value
BinMin <- min(BinnedValues)
BinMax <- max(BinnedValues)
ただし、ggplot_build
アクセスできたデータ ( PlotData[["data"]][[1]]$value
) は、実際のプロットの値と一致しません。
Henrik のコメントによると、プロットに geom_text を追加すると、
hexlab <- stat_summary_hex(geom="text",
aes(x = Lon, y = Lat, z = Churn, label=..value..), size = 1, color="black",
fun = function(x) (sum(x)))
ビニングされた六角形の最大値は 79 です。しかし、私がするとき
PlotData[["data"]][[1]]$value
これはプロットの背後にあるデータであると想定しましたが、最大値はわずか 29 であることがわかります。また、の行数は、PlotData[["data"]][[1]]
プロットされた六角形の数と等しくありません。ggplot_build を使用することは、ビン化された関数の結果を確認する正当な方法ではないようです。
一般に、関数からのすべての座標と値を含むデータ フレームにアクセスするためのより良いstat_summary_hex
方法はありますか。または、 stat_summary_hex
ステートメント内の関数によって生成される最小値と最大値を単純に決定する適切な方法はありますか?
編集:正確に何が違うかを文書化した後、原因を見つけました:私の実際の機能は、最初に与えられた例よりも複雑でした:
stat_summary_hex(aes(x = Lon, y = Lat, z = Churn),
bins=100, colour = NA, geom = "hex", drop = TRUE,
fun = function(x) if(abs(sum(x)) > 5) {sum(x)} else {NA})
これが他のヘクス位置の合計に影響する理由は理由ではありません。たとえば、合計が 79 であるはずの特定のセルでは、最大値ggplot_build
は 29 でしたが、関数を変更して set を設定するとdrop = F
、79 の期待値が表示されます。