我正在尝试使用pgf在matplotlib中实现sans-serif轴标签和刻度。我想通过rcParams进行控制,因此我可以将其用于所有后续绘图。目前,我正在使用
"pgf.rcfonts":False,
"pgf.texsystem": "pdflatex",
"text.usetex": True,
"font.family": "sans-serif",
我从mpl文档改编的。它确实将我在图中的所有文字都设置为sans-serif。但是,数字以衬线字体保存。我希望他们是无衬线的。一旦我强制使用格式化程序,即无衬线。有什么办法可以使其自动执行此操作? MinEx跟着...
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FormatStrFormatter
#define style
style = {
"pgf.rcfonts":False,
"pgf.texsystem": "pdflatex",
"text.usetex": True,
"font.family": "sans-serif"
}
#set
mpl.rcParams.update(style)
#get data
data = np.random.random(100)
#set up plot
f,ax = plt.subplots()
ax.plot(data)
#label something
ax.set_xlabel('Runner')
标签现在没有了。滴答声不是!但是打电话时
ax.xaxis.set_major_formatter(FormatStrFormatter('%d'))
是的。
答案 0 :(得分:1)
根据pgf texsystem example,您需要使用“ pfg”后端(mpl.use("pgf")
)并选择要使用的字体:
style = {
"pgf.texsystem": "pdflatex",
"text.usetex": True,
"pgf.preamble": [
r"\usepackage[utf8x]{inputenc}",
r"\usepackage[T1]{fontenc}",
r"\usepackage{cmbright}",
]
}
或者,您可以使用格式化程序,该格式化程序不会将刻度标签格式化为乳胶数学(即不会将它们放入美元符号中)。
可以通过设置来更改默认的ScalarFormatter
不使用乳胶数学
ax.xaxis.get_major_formatter()._usetex = False
ax.yaxis.get_major_formatter()._usetex = False
答案 1 :(得分:0)
问题与LateX有关。您只需要加载额外的cmbright
软件包即可启用sans-serif数学字体。
在类似Debian的系统上:
sudo apt install texlive-fonts-extra
在Fedora上:
sudo dnf install texlive-cmbright
然后尝试使用以下样式的代码:
style = {
"text.usetex": True,
"font.family": "sans-serif"
"text.latex.preamble" : r"\usepackage{cmbright}"
}