Matplotlib中的希腊符号在show()和savefig()中不同

5 投票
1 回答
1315 浏览
提问于 2025-04-28 20:28

我想在用matplotlib保存的图形中显示一个简单的希腊字母“mu”,并且希望它用罗马字体显示。我尝试了两种方法:

  1. plt.xlabel(u'Wavelength (\u03bc m)')

这种方法在我使用show()的时候效果很好,但当我尝试用savefig()保存为.png格式时,那个“mu”字符就变成了一个方块。而如果保存为.pdf格式,这个符号完全消失了。

  1. plt.xlabel(r'Wavelength ($\mathrm{\mu}$m)')

这种方法在使用show()savefig()时都能显示出希腊字母,但无论怎样,字符还是以斜体显示,尽管我要求用罗马字体。

有什么窍门吗?

暂无标签

1 个回答

1

我有很好的经验,使用LaTeX来排版所有文本(包括普通文本和数学公式)。在绘图之前,只需根据需要设置你的配置:

import matplotlib.pyplot as plt

plt.rcParams['text.usetex'] = True #Let TeX do the typsetting
plt.rcParams['text.latex.preamble'] = [r'\usepackage{sansmath}',r'\sansmath']
#Force sans-serif math mode
plt.rcParams['font.family'] = 'sans-serif' # ... for regular text
plt.rcParams['font.sans-serif'] = 'Helvetica' # Choose a nice font here

然后你可以简单地这样说:

plt.xlabel('Wavelength ($\mu$)')

这个灵感来自我在这里的回答: 使用Type 1字体绘制对数图

撰写回答