如何使用 matplotlib.pyplot 更改表格的字体大小
Posted
技术标签:
【中文标题】如何使用 matplotlib.pyplot 更改表格的字体大小【英文标题】:How to change the tables' fontsize with matplotlib.pyplot 【发布时间】:2013-03-08 23:37:13 【问题描述】:我正在用 pyplot 画一张这样的表格:
sub_axes.table(cellText=table_vals,
colWidths = [0.15, 0.25],
rowLabels=row_labels,
loc='right')
我想更改表格内容的字体大小,发现有一个fontsize
属性,
请参考definition of 'table'。
这样就变成了:
sub_axes.table(cellText=table_vals,
colWidths = [0.15, 0.25],
rowLabels=row_labels,
fontsize=12,
loc='right')
但是当我执行代码时,我得到了一个错误:
TypeError: table() got an unexpected keyword argument 'fontsize'
此属性是否已弃用?以及如何使用 pyplot 更改表格的字体大小?
【问题讨论】:
这是一个属性,但不是表构造函数的关键字参数。尝试做t=sub_axes.table(...)
然后t.fontsize = 12
【参考方案1】:
我认为文档要么暗示了一个参数(注意fontsize
不像其他参数那样是一个链接),要么目前可能有点误导。没有fontsize
参数。
翻遍the source code,发现Table.set_fontsize
方法:
table = sub_axes.table(cellText=table_vals,
colWidths = [0.15, 0.25],
rowLabels=row_labels,
loc='right')
table.set_fontsize(14)
table.scale(1.5, 1.5) # may help
这里是一个为了展示效果而夸张的字体大小的例子。
import matplotlib.pyplot as plt
# Based on http://***.com/a/8531491/190597 (Andrey Sobolev)
fig = plt.figure()
ax = fig.add_subplot(111)
y = [1, 2, 3, 4, 5, 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1]
col_labels = ['col1', 'col2', 'col3']
row_labels = ['row1', 'row2', 'row3']
table_vals = [[11, 12, 13], [21, 22, 23], [31, 32, 33]]
the_table = plt.table(cellText=table_vals,
colWidths=[0.1] * 3,
rowLabels=row_labels,
colLabels=col_labels,
loc='center right')
the_table.auto_set_font_size(False)
the_table.set_fontsize(24)
the_table.scale(2, 2)
plt.plot(y)
plt.show()
【讨论】:
为此,我必须在设置新字体大小之前添加the_table.auto_set_font_size(False)
【参考方案2】:
将auto_set_font_size
设置为False
,然后设置set_fontsize(24)
the_table.auto_set_font_size(False)
the_table.set_fontsize(24)
【讨论】:
有没有办法调整pylab.rcParams
中的字体大小?以上是关于如何使用 matplotlib.pyplot 更改表格的字体大小的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 matplotlib 更改 xticks? [复制]