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

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

  • 当我执行show()时,此方法可以正常工作,但是当我尝试使用savefig()时,将mu字符另存为.png时会显示为矩形。如果我另存为.pdf,则该符号将完全丢失。
  • plt.xlabel(r'Wavelength ($\mathrm{\mu}$m)')

  • 此方法使用show()savefig()呈现希腊字母,但是尽管要求使用罗马字体,但在每种情况下,该字符仍为斜体。

    诀窍是什么?

    最佳答案

    我对使用LaTeX排版所有文本(常规和数学)beeing有很好的经验。只需在绘制之前相应地设置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$)')
    

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

    关于python - Matplotlib希腊符号在show()和savefig()中有所不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26492454/

    10-10 14:05