我正在尝试创建一个维度为Nx7的表,其中N是一个变量。
通过matplotlib制作适当大小的表是相当具有挑战性的。
我想把它放在图的中心,标题就在table的上方。
这是我的代码
data = [
['A', 'B', 'C', 'D', 'E', 'F'],
['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
['100%', '200%', 'O', 'X', '1.2%', '100', '200'],
['100%', '200%', 'O', 'X', '1.2%', '100', '200']]
fig, ax1 = plt.subplots(dpi=200)
column_headers = data.pop(0)
row_headers = [x.pop(0) for x in data]
rcolors = np.full(len(row_headers), 'linen')
ccolors = np.full(len(column_headers), 'lavender')
cell_text = []
for row in data:
cell_text.append([x for x in row])
table = ax1.table(cellText=cell_text,
cellLoc='center',
rowLabels=row_headers,
rowColours=rcolors,
rowLoc='center',
colColours=ccolors,
colLabels=column_headers,
loc='center')
fig.tight_layout()
table.scale(1, 0.5)
table.set_fontsize(16)
# Hide axes
ax1.get_xaxis().set_visible(False)
ax1.get_yaxis().set_visible(False)
# Add title
ax1.set_title('{}\n({})'.format(title, subtitle), weight='bold', size=14, color='k')
fig.tight_layout()
plt.savefig(filename)
在我的代码中,有几个问题。
1.标题重叠在table上。
1.整个图形不知何故从中心向右移动。(结果图像的左侧填充空白)
1.表中文本的大小不是16。(比标题小得多)
1条答案
按热度按时间mbyulnm01#
下面是一些绘制表格的代码。
一些评论:
table
的支持是相当初级的。它主要是为了在现有的图上添加一些表格形式的文本。.pop()
会使代码难以推理。在Python中,通常从给定的列表开始创建新列表。dpi
和tight
边界框可以设置为savefig()
的参数。