これは別の質問に関連しています:重み付き周波数行列をプロットします。
私はこのグラフィックを持っています(以下のRのコードによって生成されます):
#Set the number of bets and number of trials and % lines
numbet <- 36
numtri <- 1000
#Fill a matrix where the rows are the cumulative bets and the columns are the trials
xcum <- matrix(NA, nrow=numbet, ncol=numtri)
for (i in 1:numtri) {
x <- sample(c(0,1), numbet, prob=c(5/6,1/6), replace = TRUE)
xcum[,i] <- cumsum(x)/(1:numbet)
}
#Plot the trials as transparent lines so you can see the build up
matplot(xcum, type="l", xlab="Number of Trials", ylab="Relative Frequency", main="", col=rgb(0.01, 0.01, 0.01, 0.02), las=1)
私はこのプロットが構築され、より頻繁なパスがよりまれなパスよりも暗く表示される方法が非常に好きです(ただし、印刷物のプレゼンテーションには十分に明確ではありません)。私がやりたいのは、数値のある種のヘクスビンまたはヒートマップを作成することです。考えてみると、プロットにはさまざまなサイズのビンを組み込む必要があるようです(封筒のスケッチの裏側を参照)。
私の質問:上記のコードを使用して100万回の実行をシミュレートした場合、スケッチに示されているように、さまざまなサイズのビンを使用して、ヒートマップまたはhexbinとして表示するにはどうすればよいですか?
明確にするために:私は、プロットの一部を通過する裁判の希少性を示すために透明性に依存したくありません。代わりに、私は希少性を熱で示し、一般的な経路を高温(赤)、まれな経路を低温(青)として示したいと思います。また、最初の試行ではパスを配置できる場所が2つしかないため、ビンを同じサイズにする必要はないと思いますが、最後の試行ではさらに多くの場所があります。したがって、私がその事実に基づいて変化するビンスケールを選択したという事実。基本的に、パスがセルを通過する回数(列1の2、列2の3など)をカウントし、通過した回数に基づいてセルに色を付けます。
更新:私はすでに@Andrieに似たプロットを持っていましたが、それが一番上のプロットよりもはるかに明確かどうかはわかりません。私が気に入らないのは、このグラフの不連続な性質です(そして、なぜある種のヒートマップが必要なのか)。最初の列には2つの可能な値しかないので、それらの間に大きな視覚的なギャップなどがあってはならないと思います。したがって、異なるサイズのビンを想定したのはなぜですか。ビニングバージョンでは、多数のサンプルがより適切に表示されると思います。
更新:このWebサイトでは、ヒートマップをプロットする手順の概要を説明しています。
これの密度(ヒートマップ)プロットバージョンを作成するには、画像内の各離散位置でのこれらのポイントの発生を効果的に列挙する必要があります。これは、グリッドを設定し、そのグリッド内のすべての場所でポイント座標が個々のピクセル「ビン」のそれぞれに「落ちる」回数を数えることによって行われます。
おそらく、そのWebサイトの情報の一部は、私たちがすでに持っているものと組み合わせることができますか?
更新:私はアンドリーがこの質問のいくつかで書いたもののいくつかを取り、これに到達しました。これは私が考えていたものに非常に近いです:
numbet <- 20
numtri <- 100
prob=1/6
#Fill a matrix
xcum <- matrix(NA, nrow=numtri, ncol=numbet+1)
for (i in 1:numtri) {
x <- sample(c(0,1), numbet, prob=c(prob, 1-prob), replace = TRUE)
xcum[i, ] <- c(i, cumsum(x)/cumsum(1:numbet))
}
colnames(xcum) <- c("trial", paste("bet", 1:numbet, sep=""))
mxcum <- reshape(data.frame(xcum), varying=1+1:numbet,
idvar="trial", v.names="outcome", direction="long", timevar="bet")
#from the other question
require(MASS)
dens <- kde2d(mxcum$bet, mxcum$outcome)
filled.contour(dens)
何が起こっているのかよくわかりませんが、これは私が作成したかったものに似ているようです(明らかに異なるサイズのビンはありません)。
更新:これは、ここにある他のプロットと同様です。それは完全に正しくありません:
plot(hexbin(x=mxcum$bet, y=mxcum$outcome))
最後に試してください。上記のように:
image(mxcum$bet, mxcum$outcome)
これはかなり良いです。手描きのスケッチのように見せたいです。