如何使用matplotlib为每个表添加名称/文本.pyplot Python3



我使用matplotlib.pyplot绘制了4个表。对于每个表,在其左上角(在第一行标签和第一列标签之间)都有一个空白区域,类似于下面的标记。

[Empty Space]   | 1st Col label | 2nd Col label | ...
1st row label   | data 1        | data 2        | ...
2st row label   | data 3        | data 4        | ...
...

我不知道如何在空白空间中添加文本作为每个表的名称。你能帮帮我吗?

import matplotlib.pyplot as plt

data = [
[100, 150, 50, 200],
[200, 150, 150, 300],
[50, 50, 50, 300],
[50, 90, 80, 70],
]

col_labels = ['bbbbbbbbb1', 'bbbbbbbbb2', 'bbbbbbbbb3', 'bbbbbbbbb4']
row_labels = ['aaaaaaaa1', 'aaaaaaaa2', 'aaaaaaaa3', 'aaaaaaaa4']
low = 100
mid = 160
high = 200
cell_text = list()
cell_colors = list()
for row in data:
row_text = list()
row_color = list()
for val in row:
row_text.append('%.1f' % val)
if val < low:
color = 'g'
elif low <= val < mid:
color = 'y'
elif mid <= val < high:
color = 'b'
else:  # val >= high
color = 'r'
row_color.append(color)
cell_text.append(row_text)
cell_colors.append(row_color)
n = 5
fig, axs = plt.subplots(n, 1)
for i in range(n):
axs[i].axis('off')
axs[i].table(
cellText=cell_text,
colLabels=col_labels,
rowLabels=row_labels,
cellColours=cell_colors,
loc='center',
)
table_name = f'TableName {i}'  # How to add table name?
plt.tight_layout()
plt.show()

尝试将最后一个循环更改为:

for i in range(n):
axs[i].axis('off')
axs[i].table(
cellText=cell_text,
colLabels=col_labels,
rowLabels=row_labels,
cellColours=cell_colors,
loc='center',
)
table_name = f'TableName {i}' + ' ' * 100
axs[i].set_title(table_name, pad=20) # This line I added
plt.tight_layout()

您必须使用matplotlib.axes.Axes.set_title函数,并且我添加了一个pad以使表名和绘图之间的间隙更大。

最新更新