我想用乳胶电脑现代字体为我的情节创建标签.但是,说服matplotlib使用乳胶字体的唯一方法是插入如下内容:
title(r'$\mathrm{test}$')
Run Code Online (Sandbox Code Playgroud)
这当然是荒谬的,我告诉latex要启动数学模式,然后暂时退出数学模式来编写实际的字符串.如何确保所有标签都以乳胶呈现,而不仅仅是公式?我如何确保这将是默认行为?
最小的工作示例如下:
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()
Run Code Online (Sandbox Code Playgroud)
这给出了以下结果:

这里x轴是我想要标签出现的方式.如何确保所有标签都显示为这样,而无需进入数学模式并再次返回?
我正在尝试使用Matplotlib图形作为相机就绪提交的一部分,并且出版社只需要使用Type 1字体.
我发现PDF后端很乐意为具有线性Y轴的简单图形输出Type-1字体,但是输出用于对数Y轴的Type-3字体.
使用对数yscale会导致使用mathtext,它似乎使用Type 3字体,可能是因为默认使用指数表示法.我可以使用一个丑陋的黑客来解决这个问题 - 使用pyplot.yticks()强制轴刻度不使用指数 - 但这需要移动绘图区域以容纳大标签(如10 ^ 6)或将轴写为10,100,1K等,所以它们适合.
我已经使用matplotlib master分支测试了下面的示例,以及1.1.1,它产生相同的行为,所以我不知道这是一个bug,可能只是意外的行为.
#!/usr/bin/env python
# Simple program to test for type 1 fonts.
# Generate a line graph w/linear and log Y axes.
from matplotlib import rc, rcParams
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
#rc('font',**{'family':'sans-serif','sans-serif':['computer modern sans serif']})
# These lines are needed to get type-1 results:
# http://nerdjusttyped.blogspot.com/2010/07/type-1-fonts-and-matplotlib-figures.html
rcParams['ps.useafm'] = True
rcParams['pdf.use14corefonts'] = True
rcParams['text.usetex'] = False
import matplotlib.pyplot as plt
YSCALES = ['linear', 'log']
def plot(filename, yscale):
plt.figure(1)
xvals = range(1, 2) …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个matplotlib插入我的LaTeX文档中的数字,我需要粗体'i'和'j'符号,而不是他们的点和帽子.
我一直在使用的代码\mathbf{\hat{\textnormal{\bfseries\i}}}在我的文档,但这里使用了amsmath封装(或可能的amssymb包装,对不起,我不知道我是很新的这两个LaTeX和matplotlib)我不能在使用它matplotlib的标签.
因此,我很想知道如何使用LaTeX的matplotlib,以及如何编写一个序言安装即可使用这些符号所需要的包.我希望这是有道理的,我知道这可能已经在那里或很简单,但我是新的所以请不要生气!
感谢你们!
编辑
所以我已经设法通过编码实现了这一点,但是当我运行代码时,我的python kernel崩溃.不幸的是,我真的不了解我的代码或它出错的地方,所以上传它以防万一.很抱歉长时间上传.再次感谢提前!
from mpl_toolkits.mplot3d import Axes3D
import numpy, matplotlib, matplotlib.pyplot as pyplot
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.preamble'] = [
r'\usepackage{amsmath}',
r'\usepackage{amssymb}']
matplotlib.rcParams['font.family'] = 'serif'
matplotlib.rcParams['font.serif'] = 'Computer Modern'
matplotlib.verbose.level = 'debug-annoying'
Module_Colour = '#F0AE1E'
fig = pyplot.figure()
ax = fig.add_subplot(111, projection='3d')
X_arr = numpy.array([1.0,0.0,0.0])
Y_arr = numpy.array([0.0,1.0,0.0])
Z_arr = numpy.array([0.0,0.0,1.0]) …Run Code Online (Sandbox Code Playgroud)