我正在尝试使用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}",
         ]
        }


python - Matplotlib为所有情节打上Sans-Serif-LMLPHP

另外,您也可以使用格式化程序,该格式化程序不会将刻度标签格式化为乳胶数学(即不会将它们放入美元符号中)。

可以通过设置默认值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/

10-08 23:21