Matplotlib中的希腊符号在show()和savefig()中不同
我想在用matplotlib保存的图形中显示一个简单的希腊字母“mu”,并且希望它用罗马字体显示。我尝试了两种方法:
plt.xlabel(u'Wavelength (\u03bc m)')
这种方法在我使用show()
的时候效果很好,但当我尝试用savefig()
保存为.png格式时,那个“mu”字符就变成了一个方块。而如果保存为.pdf格式,这个符号完全消失了。
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字体绘制对数图