简体   繁体   中英

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

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?

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()

在此输入图像描述

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM