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

Dou*_*oug 5 python matplotlib

我正在尝试使用matplotlib在一个已保存的图中以罗马字体显示一个简单的希腊字母mu.我尝试了两种方法:

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

当我这样做时,此方法可以正常工作show(),但是当我尝试使用时savefig(),mu字符在保存为.png时显示为矩形.如果我保存为.pdf,则符号完全丢失.

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

这种方法使得同时具有希腊字母show()savefig(),但性格仍是在每种情况下斜体尽管请求罗马字体.

有什么诀窍?

wsj*_*wsj 1

我在使用 LaTeX 排版所有文本(常规文本和数学文本)方面拥有非常丰富的经验。只需在绘图之前相应地设置你的 rc-settings 即可:

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
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地说:

plt.xlabel('Wavelength ($\mu$)')
Run Code Online (Sandbox Code Playgroud)

受到我自己的答案的启发: Type 1 fonts with log graphs