2016-09-30 7 views
1

私は、座標を複数回繰り返すことができるデータセットを持っています。 私はそのビン内で座標が繰り返される最大回数を表示するhexbinplotを作りたいと思っています。私はRを使用しています.ggplotを使ってグラフを作成し、グラフが同じレポート内の他のグラフと一致するようにしたいと考えています。私はアプローチが、この質問に関連しなければならないと考えているggplot2の各ビンの最大周波数ポイントを表示します。stat_binhex

library(ggplot2) 
library(data.table) 
set.seed(41) 
dat<-data.table(x=sample(seq(-10,10,1),1000,replace=TRUE), 
      y=sample(seq(-10,10,1),1000,replace=TRUE)) 
dat[,.N,by=c("x","y")][,max(N)] 
# No bin should be over 9 

p1 <- ggplot(dat,aes(x=x,y=y))+stat_binhex(bins=10) 
p1 

最小作業例(ビンはカウントされませマックスを表示) calculating percentages for bins in ggplot2 stat_binhexが、私は私の場合にそれを適応させる方法がわかりません。 また、私は最初に考えたものよりも私の目的をより困難にすることができるので、この問題ggplot2: ..count.. not working with stat_bin_hex anymoreを心配しています。

ビンにポイントが繰り返される最大回数を表示することはできますか?

+0

「座標が繰り返される最大回数」という意味を明確にすることはできますか?私はカウントと「座標が繰り返される回数」の区別を理解するのに苦労しており、この文脈では「最大」をどうしたらよいかわからない。 –

+0

ポイント(0,0)と(0,1)が同じビン内にあり、ビン内の唯一のポイントであるとします。 (0,0)は5回、(0,1)は3回出現する。その場合、使用する関数はカウント(5 + 3)なので、グラフには8が表示されます。私が使用したいのは、max関数で、したがって5(max(5,3))を表示します。 –

+0

説明をありがとう@JonNagra。私はそれを推測し、あなたが答えたとおりに何かを投稿しました。私は今あなたが何をしようとしているのかを見ていますが、私は本当に苦労しています。なぜなら、これが適切な振る舞いであるユースケースは、別の解を解明するのに役立つかもしれません(私は、非常に多くの情報を失ったときにデータを表示し、その情報を視聴者から隠すのに役立ちます)。あるいは、以下では、すべての座標を個別に表示するオプションを掲載しました。 –

答えて

1

私は、もう少しデータを再生した後、私は理解していると思います。プロット内の各ビンは複数の点を表し、例えば(9,9);(9,10)(10,9);(10,10)はすべてプロット内の単一のビン内にある。私はこれがの予期したの動作であることに注意する必要があります。なぜこのようにしたくないのかはわかりません。代わりに、それらのポイントの1つだけの値(9,9など)を表示すると思われます。

geom_hexまたはstat_hexbinへのコールでは、すべてのデータを忠実に表現しようとしているため、直接このことを行うことはできません。実際、あなたはまったく同じような離散的な座標を必ずしも期待しているわけではありません。連続したデータでも同じように機能します。

細かい制御が必要な場合は、代わりにgeom_tileを使用して値を数えたい場合があります。 (dplyrmagrittrを使用して):

countedData <- 
    dat %$% 
    table(x,y) %>% 
    as.data.frame() 

ggplot(countedData 
     , aes(x = x 
      , y = y 
      , fill = Freq)) + 
    geom_tile() 

enter image description here

、あなたがそこから表現でビットを果たしているかもしれないが、それは、少なくとも、より忠実に別々の各座標を表示していました。

また、がビン内の最大値であるである点のみを含むように、生データをフィルタリングすることもできます。それはビンニングと一致する必要がありますが、少なくともオプションである可能性があります。

@Jon Nagra(OP)linked toのソリューションstat_summary_hexを完全に理解するには、ここをクリックしてください。追加の手順がいくつかあるので、これはかなり重複しているとは思わないことに注意してください。具体的には、上記の表のステップでは、要約としてzとして使用できるものを生成する必要があります。次に、xとyを係数から元のスケールに戻す必要があります。注目すべきは

ggplot(countedData 
     , aes(x = as.numeric(as.character(x)) 
      , y = as.numeric(as.character(y)) 
      , z = Freq)) + 
    stat_summary_hex(fun = max, bins = 10 
        , col = "white") 

enter image description here

、私はまだでも、それはかなりのように派手ではないが、geom_tileがより有用である可能性があると思います。

+0

私はhexbinライブラリを見て、私が必要とする正確にこの投稿を見つけました:http://stackoverflow.com/questions/17284615/plotting-a-hex-bin-in-r-and-ggplot2-using-a -continuous-z-fill-variable 変数をxとyでグループ化し、sumの代わりにmaxを使用できます。私は私の質問を重複としてマークする必要があるかどうかわかりません。 –

+0

リンクしたソリューションを組み込むための回答を更新しました。私はこの質問が重複しているとは思わない。異なるデータ形式から始まっているからだ。 –

+0

ありがとう!私はこの場合にどのように進むべきか分からなかった。 –

関連する問題