用Python绘制矩阵图?

用Python绘制矩阵图?,python,matrix,matplotlib,Python,Matrix,Matplotlib,我有一个矩阵存储为列表列表,还有两个列表表示x和y轴的标签 A = [[1, 3, 4, 5, 6, 7], [3, 3, 0, 7, 9, 2], [1, 3, 4, 5, 6, 6]] x = ["A", "B", "C", "E", "F", "G"] Y = ["R", "S", "T"] 我想把矩阵画成一张表(如下图) 在Python中可能吗 我认为您可以使用plt.text实现这些目的。下面的代码使用它来获得您想要的结果 import matplotli

我有一个矩阵存储为列表列表,还有两个列表表示
x
y
轴的标签

A = [[1, 3, 4, 5, 6, 7],
     [3, 3, 0, 7, 9, 2],
     [1, 3, 4, 5, 6, 6]]    
x = ["A", "B", "C", "E", "F", "G"]
Y = ["R", "S", "T"]
我想把矩阵画成一张表(如下图)

在Python中可能吗


我认为您可以使用
plt.text
实现这些目的。下面的代码使用它来获得您想要的结果

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import rcParams
rcParams['font.family'] = 'serif'
rcParams['font.size'] = 16

A = [[1, 3, 4, 5, 6, 7],
     [3, 3, 0, 7, 9, 2],
     [1, 3, 4, 5, 6, 6]]
X = ["A", "B", "C", "E", "F", "G"]
Y = ["R", "S", "T"]

m = len(Y)
n = len(X)

plt.figure(figsize=(n + 1, m + 1))
for krow, row in enumerate(A):
    plt.text(5, 10*krow + 15, Y[krow],
             horizontalalignment='center',
             verticalalignment='center')
    for kcol, num in enumerate(row):
        if krow == 0:
            plt.text(10*kcol + 15, 5, X[kcol],
                     horizontalalignment='center',
                     verticalalignment='center')
        plt.text(10*kcol + 15, 10*krow + 15, num,
                 horizontalalignment='center',
                 verticalalignment='center')

plt.axis([0, 10*(n + 1), 10*(m + 1), 0])
plt.xticks(np.linspace(0, 10*(n + 1), n + 2), [])
plt.yticks(np.linspace(0, 10*(m + 1), m + 2), [])
plt.grid(linestyle="solid")
plt.savefig("Table.png", dpi=300)
plt.show()
然后,你得到


我认为您可以使用
plt.text
实现这些目的。下面的代码使用它来获得您想要的结果

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import rcParams
rcParams['font.family'] = 'serif'
rcParams['font.size'] = 16

A = [[1, 3, 4, 5, 6, 7],
     [3, 3, 0, 7, 9, 2],
     [1, 3, 4, 5, 6, 6]]
X = ["A", "B", "C", "E", "F", "G"]
Y = ["R", "S", "T"]

m = len(Y)
n = len(X)

plt.figure(figsize=(n + 1, m + 1))
for krow, row in enumerate(A):
    plt.text(5, 10*krow + 15, Y[krow],
             horizontalalignment='center',
             verticalalignment='center')
    for kcol, num in enumerate(row):
        if krow == 0:
            plt.text(10*kcol + 15, 5, X[kcol],
                     horizontalalignment='center',
                     verticalalignment='center')
        plt.text(10*kcol + 15, 10*krow + 15, num,
                 horizontalalignment='center',
                 verticalalignment='center')

plt.axis([0, 10*(n + 1), 10*(m + 1), 0])
plt.xticks(np.linspace(0, 10*(n + 1), n + 2), [])
plt.yticks(np.linspace(0, 10*(m + 1), m + 2), [])
plt.grid(linestyle="solid")
plt.savefig("Table.png", dpi=300)
plt.show()
然后,你得到

请参见