用Matplotlib绘制网格中加权单元的图矩阵

时间:2018-11-25 15:00:39

标签: python matplotlib matrix grid

我有一个由随机整数组成的方阵,定义如下:

import numpy as np

dim_low, dim_high = 0, 20 #array of random integers' dimensions

matrix = np.random.random_integers(low = dim_low,high = dim_high, size=(dim_high,dim_high))
print(matrix) #the matrix of defined with repetitions of the array.

图片中的结果矩阵: https://i.stack.imgur.com/eEcCh.png

我该怎么做才能用Matplotlib绘制在网格中生成的矩阵,其方式是将每个单元格的值(权重)打印在每个单元格的中心,并且x的范围从0到20 y轴,如下面的图片(请注意,示例中的文本为'x''o',我需要的是权重,以整数形式而不是文本形式):

https://i.stack.imgur.com/9mBuG.png此处

2 个答案:

答案 0 :(得分:0)

我从this post中提取了大部分信息。

import numpy as np
import matplotlib.pyplot as plt

low_dim = 0
high_dim = 20

matrix = np.random.randint(low_dim, high_dim, (high_dim,high_dim))

fig, ax = plt.subplots()

for i in range(0, high_dim):
    for j in range(0, high_dim):
        val = matrix[i,j]
        ax.text(i+0.5, j+0.5, str(val), va='center', ha='center')

ax.set_xlim(low_dim, high_dim)
ax.set_ylim(low_dim, high_dim)
ax.set_xticks(np.arange(high_dim))
ax.set_yticks(np.arange(high_dim))
ax.grid()

plt.show()

答案 1 :(得分:-1)

正确的模块将是天生的。它具有您要求的所有功能以及更多...
尝试使用https://seaborn.pydata.org/generated/seaborn.heatmap.html。我不会为您介绍不同的选项,因为它们的确有据可查。
祝好运!

顺便说一句,您将希望使用熊猫数据透视表以实现舒适的兼容性。