You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让Matplotlib中ax.text的文本显示为Times New Roman字体?

解决Matplotlib中LaTeX格式文本不显示Times New Roman字体的问题

这个问题我之前也踩过坑!核心原因是你用了$test_{1}$这种LaTeX格式的文本,此时Matplotlib会调用LaTeX引擎来渲染这部分内容,而你之前设置的plt.rcParams字体参数只对非LaTeX渲染的文本生效,自然不会应用到公式文本上。下面给你两种针对性的解决办法:

方法一:继续使用LaTeX渲染(适合复杂公式场景)

如果你的文本包含复杂的数学公式,必须用LaTeX渲染,那需要额外配置LaTeX的字体参数:

  1. 首先开启Matplotlib的LaTeX渲染模式
  2. 在LaTeX的预导言中加载Times New Roman对应的宏包

把以下代码加到你的初始化设置里:

import matplotlib.pyplot as plt

# 基础字体设置
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman'] + plt.rcParams['font.serif']

# 配置LaTeX渲染的字体
plt.rcParams['text.usetex'] = True
plt.rcParams['text.latex.preamble'] = r'\usepackage{times}'

注意:你的系统必须安装了完整的LaTeX环境(比如TeX Live、MikTeX),否则会出现渲染失败的错误。如果times宏包没生效,可以尝试替换成\usepackage{mathptmx},它同样能让数学公式适配Times New Roman风格。

方法二:改用Matplotlib原生文本语法(适合简单格式场景)

如果只是简单的下标需求,完全不需要依赖LaTeX,改用Matplotlib原生的文本标记语法即可,这样你的rcParams字体设置会直接生效:

修改你的文本添加代码为:

ax.text(0.5,0.5, 'test$_{1}$', horizontalalignment='center', verticalalignment='center', size=18)

这里的$_{1}$是Matplotlib原生的下标写法,不需要把整个文本用$...$包裹,此时文本会完全遵循你设置的Times New Roman字体。

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

火山引擎 最新活动