You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:如何修改Matplotlib生成表格的行文本颜色?

修改Matplotlib表格某一行文本颜色的可行方案

当然有办法实现!你已经用cellColours和rowColours搞定了背景色设置,要修改特定行的文本颜色,咱们可以直接操作matplotlib表格的单元格对象来实现——matplotlib的Table提供了非常灵活的单元格属性控制方法。

具体实现思路

  1. 通过table.get_celld()获取表格所有单元格的字典,每个单元格通过(行索引, 列索引)来定位;
  2. 注意matplotlib表格的行索引规则:第0行是列标题行,你的数据行从第1行开始,行标题对应的列索引是-1;
  3. 定位到目标行的所有单元格(包括数据单元格和行标题),调用set_text_props(color=...)设置文本颜色。

结合你现有代码的完整示例

假设你想把第3行(对应data里索引为2的行)的文本改成白色,代码可以这么写:

import matplotlib.pyplot as plt

# 替换成你实际的data和标签数据
data = [['1', '2'], ['3', '4'], ['5', '6'], ['7', '8'], ['9', '10']]
row_labels = ['Row1', 'Row2', 'Row3', 'Row4', 'Row5']
col_labels = ['Col1', 'Col2']

colors = ['tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple']
cell_colors = [['tab:blue', 'tab:blue'], ['tab:orange', 'tab:orange'], ['tab:green', 'tab:green'], ['tab:red', 'tab:red'], ['tab:purple', 'tab:purple']]

# 你的原有表格创建代码
table = plt.table(cellText=data, cellColours=cell_colors, rowLabels=row_labels, rowColours=colors, colLabels=col_labels, loc='center')

# ------------------- 新增修改文本颜色的代码 -------------------
# 获取所有单元格的字典
cell_dict = table.get_celld()

# 目标行:data里的第3行(索引2),对应表格里的行索引是2+1=3(因为第0行是列标题)
target_data_idx = 2
table_row_idx = target_data_idx + 1

# 修改该行所有数据单元格的文本颜色
for col_idx in range(len(col_labels)):
    cell = cell_dict[(table_row_idx, col_idx)]
    cell.set_text_props(color='white')

# 如果需要连行标题的文本颜色一起修改,加上这行
cell_dict[(table_row_idx, -1)].set_text_props(color='white')
# -------------------------------------------------------------

# 隐藏坐标轴,让表格更清爽
plt.axis('off')
plt.show()

灵活调整说明

  • 如果你要修改其他行,只需要调整target_data_idx的值即可(比如要改第1行,就设为0);
  • 文本颜色可以用任意matplotlib支持的颜色格式,比如十六进制#ffffff、颜色名称'black'、RGB元组(1,0,0)等;
  • 如果只想修改该行某一列的文本颜色,去掉循环,直接指定col_idx即可(比如只改第1列:cell_dict[(table_row_idx, 0)].set_text_props(color='white'))。

内容的提问来源于stack exchange,提问作者KMarieZ84

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:47:32