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

如何修改ax.set_title实现Matplotlib标题文本多色显示?

解决Matplotlib标题文本分色问题

方法1:使用HTML风格富文本格式

Matplotlib原生支持HTML风格的<span>标签设置文本颜色,无需依赖LaTeX,直接修改标题字符串即可实现需求:

import matplotlib.pyplot as plt

alpha, beta = 0.5, 0.5
n = 10  # 替换为实际的n值

fig, ax = plt.subplots(1, 1, figsize=(6,3))
title_content = (
    r"Predicted $x$ with Bayes Factor w.r.t. $\beta(1,1)$:" + "\n"
    + "<span style='color:green'> > 3 (green)</span> or <span style='color:blue'> < 3 (blue)</span>" + "\n"
    + r"when prior = $\beta$" + f"({alpha}, {beta}) "
    + f"[n = {n}] " + "-NO DATA-"
)
ax.set_title(title_content, fontsize=15)
plt.show()

方法2:拆分标题为独立文本元素

如果富文本格式存在兼容性问题,可手动拆分标题内容,用ax.text()分别添加不同颜色的文本块,通过坐标调整实现对齐:

import matplotlib.pyplot as plt

alpha, beta = 0.5, 0.5
n = 10

fig, ax = plt.subplots(1, 1, figsize=(6,3))
# 第一行标题(黑色)
ax.text(0.5, 1.15, 
        r"Predicted $x$ with Bayes Factor w.r.t. $\beta(1,1)$:",
        fontsize=15, ha='center', transform=ax.transAxes)
# 带颜色的中间行
ax.text(0.5, 1.08,
        "> 3 (green)", color='green', fontsize=15, ha='center', transform=ax.transAxes)
ax.text(0.5, 1.08,
        " or ", fontsize=15, ha='center', transform=ax.transAxes)
ax.text(0.5, 1.08,
        "< 3 (blue)", color='blue', fontsize=15, ha='center', transform=ax.transAxes)
# 最后一行标题(黑色)
ax.text(0.5, 1.01,
        r"when prior = $\beta$" + f"({alpha}, {beta}) " + f"[n = {n}] " + "-NO DATA-",
        fontsize=15, ha='center', transform=ax.transAxes)
# 调整顶部边距避免标题被截断
ax.margins(y=0.3)
plt.show()

关于LaTeX方法无效的说明

你之前尝试的\textcolor{green}{...}是LaTeX语法,需要Matplotlib开启LaTeX渲染才能生效(需系统已安装LaTeX环境),开启方式如下:

plt.rcParams['text.usetex'] = True

但这种方式依赖外部环境,不如前两种方法便捷,推荐优先使用富文本格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:35:05