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

如何在Matplotlib中使用f-string时修改标题部分文字颜色?

解决Matplotlib标题局部文字变色的问题

要实现标题中仅预测类别文字按color变量变色,不能直接用普通f-string整串设置标题(因为plt.title()的color参数会作用于整个标题),推荐以下两种方法:

方法一:使用HTML标记(推荐)

Matplotlib支持在文本中嵌入HTML <span> 标签来指定局部文字样式,直接构建带颜色标记的标题文本即可:

# 生成带颜色标记的预测类别文本
pred_class_colored = f"<span style='color:{color}'>{class_names[y_pred_class]}</span>"
# 计算置信度数值
confidence_val = torch.softmax(y_pred, dim=1).max().item()
# 拼接完整标题文本
full_title = f"Predicted: {pred_class_colored} | Confidence: {confidence_val:.2f}"

# 设置标题,Matplotlib会自动解析HTML标记
plt.title(full_title)

这种方法无需额外处理,代码简洁且兼容性好,大部分Matplotlib后端都支持。

方法二:通过Text对象修改局部字符颜色

如果不想用HTML标记,可以先创建标题的Text对象,再定位到预测类别的字符区间修改颜色:

# 计算置信度并生成原始标题文本
confidence_val = torch.softmax(y_pred, dim=1).max().item()
full_title = f"Predicted: {class_names[y_pred_class]} | Confidence: {confidence_val:.2f}"
# 创建标题并获取对应的Text对象
title_obj = plt.title(full_title)

# 定位预测类别文本在标题中的位置
pred_text_start = len("Predicted: ")
pred_text_end = pred_text_start + len(class_names[y_pred_class])

# 修改对应区间的字符颜色
title_obj._text.set_color(pred_text_start, pred_text_end, color)

这种方法需要手动计算字符索引,适合对文本样式有更精细控制的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:07:06