Это связано с другим вопросом: взвешенная по частоте матрица.
У меня есть эта графика (созданная кодом ниже в 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)
Мне очень нравится, как этот сюжет строится и показывает более частые пути, такие же темные, чем более редкие пути (но это недостаточно ясно для презентации печати). То, что я хотел бы сделать, это создать какой-то гексбин или тепловую карту для чисел. Подумав об этом, кажется, что сюжет должен будет включать в себя различные бункеры (см. Мою эскиз огибающей):
Мой вопрос: Если я смоделирую миллион прогонов, используя вышеприведенный код, как я могу представить его как тепловую карту или гексбин, с различными ячейками, как показано на эскизе?
Чтобы уточнить: я не хочу полагаться на прозрачность, чтобы показать редкость судебного разбирательства, проходящего через часть сюжета. Вместо этого я хотел бы обозначить редкость с теплом и показать общий путь как горячий (красный) и редкий путь как холодный (синий). Кроме того, я не думаю, что ящики должны быть одного размера, потому что первое испытание имеет только два места, где может быть путь, но в последнем есть еще много. Отсюда и тот факт, что я выбрал меняющуюся шкалу бинов, основанную на этом факте. По сути, я подсчитываю количество раз, когда путь проходит через ячейку (2 в столбце 1, 3 в столбце 2 и т.д.), а затем окрашивает ячейку в зависимости от того, сколько раз она прошла.
ОБНОВЛЕНИЕ: У меня уже был сюжет, похожий на @Andrie, но я не уверен, что он намного яснее, чем верхний сюжет. Это разрывный характер этого графика, который мне не нравится (и почему я хочу какую-то тепловую карту). Я думаю, что, поскольку в первом столбце есть только два возможных значения, не должно быть огромного визуального разрыва между ними и т.д. Поэтому я предполагал, что ящики разных размеров. Я все еще чувствую, что версия binning будет показывать большее количество образцов.
Обновление: Этот веб-сайт описывает процедуру построения карты тепла:
Чтобы создать версию графика плотности (Heatmap), мы должны эффективно перечислять появление этих точек в каждом дискретном месте на изображении. Это делается путем установки сетки и подсчета количества раз, когда координата точки "падает" в каждый из отдельных "ящиков" пикселя в каждом месте в этой сетке.
Возможно, часть информации на этом веб-сайте может быть объединена с тем, что у нас уже есть?
Обновление: я взял некоторые из того, что Андри написал с некоторыми из этого question, чтобы достичь этого, что довольно близко к тому, что я задумывал:
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)
Это очень хорошо. Я просто хотел бы, чтобы это выглядело как мой рисованный эскиз.