The*_*ude 7 python latex matplotlib tex
我有一个与在python中使用TeX相关的问题.
我启用了以下包:
import numpy
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rc('text', usetex = True)
matplotlib.rc('font', **{'family' : "sans-serif"})
params = {'text.latex.preamble' : [r'\usepackage{siunitx}', r'\usepackage{sfmath}']}
plt.rcParams.update(params)
Run Code Online (Sandbox Code Playgroud)
可以在我之前的一个问题中查找原因.
但是,我现在也可以使用amsmath包的字体.当我将它包含在params中时,它没有响应.我需要amsmath的是用"a"标记图的x轴.
所以告诉你我有什么:

和我想要的(关于x标签):

请注意,以产生第二图像,我换sfmath到amsmath.这立即弄乱了x和y-ticks.这是我不想发生的事情.
是否可以将单个字母/单词的字体样式更改为amsmath?这样我只能在指示图形的x标签时才使用该字体样式.
另一种方法是sfmath用amsmathin 替换params并确保刻度看起来像第一个图像.
谢谢
在旁注中,数字是使用以下方式创建的:
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
ax1.set_xlabel(r"$a$", fontsize = 14)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我们可以使用您的第二种方法实现您正在寻找的内容:使用amsmath然后将ticklabels更改为不同的字体.这比这里列出的其他答案更具攻击性,但它最能实现你想要的.
诀窍是使用amsmath并让Matplotlib像往常一样渲染所有内容,然后在最后,使用原始的sans-serif字体重置刻度标签.我不确定这是否完全颠覆usetex,但如果确实如此,那么你就会有一些奇怪的TeX渲染标签和Matplotlib渲染标签.看起来很棒!
重要的代码是
fontProperties = {'family':'sans-serif', 'weight': 'normal', 'size': 12}
ax1.set_xticklabels(ax1.get_xticks(), fontProperties)
ax1.set_yticklabels(ax1.get_yticks(), fontProperties)
Run Code Online (Sandbox Code Playgroud)
将此添加到脚本的末尾并添加将amsmath提供以下内容:
import numpy
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rc('text', usetex = True)
matplotlib.rc('font', **{'family' : "sans-serif"})
params = {'text.latex.preamble' : [r'\usepackage{siunitx}', r'\usepackage{amsmath}']}
plt.rcParams.update(params)
fig = plt.figure(figsize=(8,6))
ax1 = fig.add_subplot(1, 1, 1)
ax1.set_xlabel(r"$a$", fontsize = 14)
fontProperties = {'family':'sans-serif', 'weight': 'normal', 'size': 12}
ax1.set_xticklabels(ax1.get_xticks(), fontProperties)
ax1.set_yticklabels(ax1.get_yticks(), fontProperties)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |