Matplotlib not using latex font while text.usetex==True

匿名 (未验证) 提交于 2019-12-03 02:05:01

问题:

I want to create labels to my plots with the latex computer modern font. However, the only way to persuade matplotlib to use the latex font is by inserting something like:

title(r'$\mathrm{test}$') 

This is of course ridiculous, I tell latex to start math mode, and then exit math mode temporary to write the actual string. How do I make sure that all labels are rendered in latex, instead of just the formulas? And how do I make sure that this will be the default behaviour?

A minimal working example is as follows:

import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np  # use latex for font rendering mpl.rcParams['text.usetex'] = True   x = np.linspace(-50,50,100) y = np.sin(x)**2/x plt.plot(x,y)  plt.xlabel(r'$\mathrm{xlabel\;with\;\LaTeX\;font}$') plt.ylabel(r'Not a latex font') plt.show() 

This gives the following result:

Here the x axis is how I want the labels to appear. How do I make sure that all labels appear like this without having to go to math mode and back again?

回答1:

The default Latex font is known as Computer Modern:

from matplotlib import rc import matplotlib.pylab as plt  rc('font', **{'family': 'serif', 'serif': ['Computer Modern']}) rc('text', usetex=True)  x = plt.linspace(0,5) plt.plot(x,plt.sin(x)) plt.ylabel(r"This is $\sin(x)$", size=20) plt.show() 



回答2:

The marked answer can be enabled by default by changing a few lines in the matplotlibrc file:

text.usetex = True font.family = serif  font.serif = cm 


回答3:

I am using matplotlib 1.3.1 on Mac OSX, add the following lines in matplotlibrc works for me

text.usetex : True font.family : serif  font.serif  : cm 

Using = leads to a UserWarning: Illegal line



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!