首页 > 解决方案 > 更改特定 matplotlib 表格单元格的字体大小

问题描述

我目前正在 matplotlib 中使用 pyplot 做一个项目,我无法在我的表格的某些单元格中指定字体大小。我尝试了不同的方法,但似乎都不起作用。

我创建我的表。

    def detail_grid(self, ax, ra, dec):
        ax.axis('off')

        SNR, doppler = self.SNR_and_doppler()
        title = ['Parameters']
        labels = ['RA', 'Dec', 'SNR', 'Doppler']
        values = [
            [fr'{ra}$^\circ$'],
            [fr'{dec}$^\circ$'],
            [f'{SNR}dB'],
            [f'{doppler}' + r'$\frac{km}{s}$']]

        loc = 'center'
        colwidth = [0.5, 0.1]
        color = [colors.to_rgba('g', 0.25)]*4
        # cellcolor = ['k']*4

        table = ax.table(cellText = values, colLabels = title, rowLabels = labels, colColours = color, rowColours = color, rowLoc = loc, cellLoc = loc, loc = 9, colWidths = colwidth)
        table.set_fontsize(24)

该函数采用子图网格形式的轴和我想在表格中显示的一些坐标。上面的代码产生了下面的图(注意,只有右上角的表格)。 上面代码生成的表格,所有文字都是相同的字体

我想做的是减小白色单元格的字体大小,所以我在表格网格中找到它们的位置,my_table.get_celld().items()并使用 for 循环遍历单元格,只选择我希望更改字体大小的单元格。

for key, cell in table.get_celld().items():
    if key[1] == 0 and key[0] != 0:
        cell.set_fontsize(10)
        print(key, cell.get_text().get_text())

打印出单元格的值我确定我选择了正确的单元格,因为我得到了以下输出(值不一样,但在这种情况下并不重要)。

(1, 0) 84.6$^\circ$
(2, 0) 40.8$^\circ$
(3, 0) 14.359dB
(4, 0) 83.3$\frac{km}{s}$

虽然我留下的结果有点令人困惑。 所有单元格的字体大小都更改为 10。

我还尝试在没有 for 循环的情况下设置字体大小,结果也相同(所有单元格都会更改字体大小)。

cells = table.get_celld()
cells[(1,0)].set_fontsize(10)

我希望有人能帮我弄清楚如何只更改表格中白色单元格的字体大小!

标签: pythonmatplotlib

解决方案


推荐阅读