Matplotlib在text.usetex == True时不使用乳胶字体 [英] Matplotlib not using latex font while text.usetex==True

查看:631
本文介绍了Matplotlib在text.usetex == True时不使用乳胶字体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用乳胶计算机现代字体为绘图创建标签.但是,说服matplotlib使用乳胶字体的唯一方法是插入以下内容:

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

这将产生以下结果:

在这里,x轴是我希望标签出现的方式.如何确保所有标签都像这样显示而不必进入数学模式然后再次返回?

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?

推荐答案

默认的Latex字体称为Computer Modern:

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

这篇关于Matplotlib在text.usetex == True时不使用乳胶字体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆