⚠️ 本文讨论基于 macOS 系统,部分示例代码可能需要根据操作系统微调。
import matplotlib.pyplot as plt
config = {
"font.family": "serif", # 使用衬线体
"font.serif": ["SimSun"], # 全局默认使用衬线宋体
"font.size": 14, # 五号,10.5磅
"axes.unicode_minus": False,
"mathtext.fontset": "stix", # 设置 LaTeX 字体,stix 近似于 Times 字体
}
plt.rcParams.update(config)
fig, ax = plt.subplots(figsize=(5, 5))
ax.plot([i / 10.0 for i in range(10)], [i / 10.0 for i in range(10)])
# 中西混排,西文使用 LaTeX 罗马体
ax.set_title("能量随时间变化\n$\mathrm{Change\ in\ energy\ over\ time}$")
ax.set_xlabel("时间($\mathrm{s}$)")
ax.set_ylabel("能量($\mathrm{J}$)")
# 坐标系标签使用西文字体
ticklabels_style = {
"fontname": "Times New Roman",
"fontsize": 12, # 小五号,9磅
}
plt.xticks(**ticklabels_style)
plt.yticks(**ticklabels_style)
plt.legend(["测试曲线"])
plt.show()
$\mathrm{...}$
转换西文为 STIX 罗马体;STIX fonts (with are designed to blend well with Times).
上述代码 "font.serif": ["SimSun"]
中的字体名可通过以下代码块得到:
# find_fonts.py
from matplotlib import font_manager
for font in font_manager.fontManager.ttflist:
print(font.name)
在终端中使用
python find_fonts.py | fzf
即可交互搜索可用字体❗️