跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Matplotlib 中如何配置 Times New Roman 字体

综述由AI生成在 Matplotlib 中配置 Times New Roman 字体的三种方案:STIX 字体、系统自定义模式及 LaTeX 引擎调用。文章详细对比了各方案的适用场景与优缺点,解析了学术公式中变量 Q 正体与斜体的显示差异,并提供了 Draw.io 中的公式字体设置技巧,旨在帮助科研人员解决论文绘图字体规范问题,确保图表符合期刊要求。

随缘发布于 2026/3/21更新于 2026/5/2231 浏览

引言

做科研的同学肯定都经历过这样的时刻:辛辛苦苦跑完实验,用 Python 画出了精美的折线图,结果投稿时被审稿人一句冷冰冰的意见打回:

'Figures should use standard fonts (e.g., Times New Roman). The current font looks like Arial/Computer Modern.'

你可能会疑惑:我明明在 PPT 里看是 Times New Roman 啊?为什么 Matplotlib 默认画出来的公式(尤其是这种变量)看起来就是'不对味'?

本文将带你通过三个层级,彻底解决 Matplotlib 中的 Times New Roman 字体问题,并顺带解密那个让无数人困惑的字母 'Q'。


基础方案:STIX 字体(最快上手)

Matplotlib 自带了一套名为 STIX (Scientific and Technical Information Exchange) 的字体,它是专门为了模仿 Times New Roman 而设计的。

适用场景: 一般会议论文,或者对字体细节要求不严苛的场合。

代码实现:

import matplotlib.pyplot as plt

# 将数学公式字体设置为 stix
plt.rcParams['mathtext.fontset'] = 'stix'
# 将普通文本字体设置为衬线字体
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman']

plt.plot([1, 2, 3])
plt.title(r"Result: $Q_i = \sin(x)$")
plt.show()

缺点: STIX 毕竟只是'模仿者'。在某些字母的细节上(例如数字 1 的起笔、v 的弯曲度),它和真正的 Times New Roman 还是有肉眼可见的区别。


进阶方案:强制调用系统字体(无需安装 LaTeX)

如果你有'强迫症',或者期刊要求必须使用操作系统自带的 Times New Roman,可以使用 Custom(自定义)模式。这招能骗过 99% 的审稿人。

适用场景: 绝大多数 SCI 期刊,不想折腾 LaTeX 环境的 Windows/Mac 用户。

代码实现:

config = {
    "font.family": 'serif',
    "font.serif": ['Times New Roman'],
    "mathtext.fontset": 'custom',
    "mathtext.rm": 'Times New Roman',
    "mathtext.it": ,
    : 
}
plt.rcParams.update(config)
'Times New Roman:italic'
"mathtext.bf"
'Times New Roman:bold'

原理: 强行告诉 Matplotlib:'别用你自带的渲染器了,去系统里找名叫 Times New Roman 的字体文件来用。'


高级方案:调用外部 LaTeX 引擎(终极完美)

这是科研绘图的'终极武器'。直接调用你电脑上的 LaTeX 编译器来生成文字,效果和你的论文正文完全一致。

适用场景: Nature/Science 级别顶刊,或者对公式排版(根号、积分号、微积分算子)有极致要求的场景。

前提条件: 电脑必须安装 TeX Live (推荐) 或 MiKTeX。

代码实现:

plt.rcParams.update({
    "text.usetex": True,
    "font.family": "serif",
    "font.serif": ["Times"],
    "text.latex.preamble": r"\usepackage{mathptmx}"
})

*注:如果你觉得 mathptmx 太老旧,可以换成更现代的 \usepackage{newtxtext,newtxmath}。


常见问题:Q 字体样式

这是很多人容易踩的坑。大家都是 Times New Roman,为什么有的 'Q' 尾巴是直的,有的是弯的?

这里要区分 正体 (Roman) 和 斜体 (Italic):

  1. 正体 Q:尾巴是一条短直线,穿过圆圈右下角。风格严肃。
  2. 斜体 Q:尾巴是一条优雅的长曲线(Swash),像书法的笔触。

真相是: 在学术公式中,变量(如 , )默认是斜体。如果你画出来的图里,Q 的尾巴是直的,说明你配置错了(可能用成了正体,或者没开启数学模式)。

正确效果对比:

  • ❌ plt.text(x, y, "Q") -> 正体 Q,尾巴直,不符合变量规范。
  • ✅ plt.text(x, y, "$Q$") -> 数学斜体 Q,尾巴弯,这才是论文要的!

扩展:Draw.io 设置

不仅是 Python,我们在画流程图时也常遇到这个问题。Draw.io 的公式默认用的是 Computer Modern(LaTeX 默认字体)。

解决方法:
在 Draw.io 里写公式时,对于非变量的文本(如单位),用 ext{} 包裹,并配合右侧面板的字体设置:

$$ v_{max} = 10 \text{ m/s} $$

这样,v_{max} 会保持数学斜体,而 m/s 会变成你设置的 Times New Roman 正体,完美融合。


总结

  • 赶时间/要求不高:用 stix。
  • 不装 LaTeX 但要真 Times:用 mathtext.fontset = 'custom'。
  • 追求出版级完美:装好 TeX Live,开启 text.usetex = True。

希望这篇指南能帮你的论文图片一次过审!

目录

  1. 引言
  2. 基础方案:STIX 字体(最快上手)
  3. 将数学公式字体设置为 stix
  4. 将普通文本字体设置为衬线字体
  5. 进阶方案:强制调用系统字体(无需安装 LaTeX)
  6. 高级方案:调用外部 LaTeX 引擎(终极完美)
  7. 常见问题:Q 字体样式
  8. 扩展:Draw.io 设置
  9. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ESP32-CAM 实时视频流传输与查看方案
  • AirSim 无人机仿真入门:实现起飞与降落
  • RAGFlow 深度解析:架构、部署与应用实战
  • LLaMA 大模型 LoRA 微调实践与心得
  • Python 技能实战:从自动化办公到数据分析的职业进阶
  • 前端首屏加载优化实战清单与自查表
  • Cursor 与 Copilot 组合实战:AI 编程效率提升指南
  • 本地化部署 ClawdBot 构建粤语英语双向翻译机器人
  • 人形机器人与机器狗现场部署:单场与多机协同实战
  • 2025 AI Agent 技术栈全解析:从 LLM 到自主智能体
  • LLM 长文本处理技术综述:位置编码与注意力机制优化
  • Vue3 中模板调用方法提示不存在的排查与修复
  • 产品经理如何用 TRAE 从画图工转型为 AI 辅助设计者
  • 开源教程「动手学大模型应用开发」:大模型应用开发与架构详解
  • Docker 本地部署 Dify 教程
  • 协作机器人拖动示教控制方法实现原理
  • 大模型学习指南:从基础理论到工程应用
  • Java SE 文件 IO 基础
  • AI 数据标注工具实战:提速 3 倍的落地经验
  • C++ STL 容器适配器详解:Stack、Queue 与 Priority Queue 的本质与实现

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online