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

5

我想在使用matplotlib保存图像时,以罗马字体显示一个简单的希腊字母mu。我尝试了两种方法:

  1. plt.xlabel(u'波长 (\u03bc m)')

当我使用 show()方法时,这种方法可以正常工作,但是当我尝试使用savefig()方法时,将其保存为.png文件时,mu字符显示为一个矩形。如果我将其保存为.pdf文件,则完全没有该符号。

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

这种方法在使用show()savefig()方法时都能呈现希腊字母,但无论哪种情况下,该字符仍然是斜体的,尽管请求使用罗马字体。

有什么诀窍吗?


我使用LaTeX包upgreek解决了同样的问题,该包提供了宏\upmu,我在matplotlib和文本中都使用了它。 - David Zwicker
1个回答

1

我在使用LaTeX排版所有文本(包括数学公式)方面有丰富的经验。只需在绘图之前设置rc设置即可:

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$)')

受到我在这里的回答启发: 使用对数图形的第一类字体

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接