我想生成一個類似於answer中的熱圖圖像。不同的是,我想從值0和1在Python中生成熱圖
之間的二維數組我試圖做到這一點:
def generate_x_y_vectors(prob_map):
multiplier = 100
xs = []
ys = []
for y in range(len(prob_map)):
for x in range(len(prob_map[y])):
count = int(prob_map[y][x] * multiplier)
xs.extend([x] * count)
ys.extend([y] * count)
return (xs, ys)
def heatmap(probabilities):
#probabilities is a 2d nxn array
n = len(probability_map)
gridsize = n + 1
(xs, ys) = generate_x_y_vectors(probability_map)
plt.figure()
plt.hexbin(xs, ys, C=None, gridsize=gridsize, mincnt=1)
plt.axis([0, n, 0, n])
與此的主要問題是,我不能調gridsize作整潔的地圖 - 大量的白色空間最終形成條紋效果/等等。
在任何一種情況下,我都會想像有一種更好的方式來做到這一點,而不必經歷乏味的生成點!
理想情況下,我想要一些機制來決定是否繪製一個六邊形或不(如我上面所做的)。
我的動機是我有一個簡單的2變量馬爾可夫鏈,其中2個變量的總和不能超過某個值,n。每個初始條件我都有一個概率數組。所以熱圖將是一個由區域x < n-y所包圍的三角形。
這是一個相當複雜的問題,並沒有說明你到目前爲止嘗試過的任何東西。你知道Python嗎?你只是在尋找某人爲你寫代碼嗎?請更多細節,特別是你嘗試過的。只是在正確的方向提示,看看matplotlib。 – Vorticity
感謝您的澄清。它看起來像hexbin是你在找什麼,所以你在正確的軌道上。你如何獲得網格?當你說條紋效果你是指橫條紋? – Vorticity