我正在尝试使用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'))
他们是。
最佳答案
根据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
关于python - Matplotlib为所有情节打上Sans-Serif,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51405646/