Skip to main content
 首页 » 编程设计

python之在 Python 中绘制矩阵图

2025年05月04日30shangdawei

我有一个存储为列表列表的矩阵,还有两个列表表示 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() 

然后,你得到