我想生成一个类似于answer中的热图图像。不同的是,我想从0到1之间的二维数组中执行。在
我所做的: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变量Markov链,其中2个变量的和不能超过某个值,n。我得到了一个数组,每个初始条件都有一定的概率。所以热图应该是一个三角形,由x<;n-y包围