我尝试使用Gentium Plus作为matplotlib中的主要字体,特别是对于数字。 以下工作是为了将Palatino用于一切,这对数学字体来说很好。
import matplotlib.pyplot as plt
font = {'family': 'serif', 'serif': ['Palatino'], 'size': 10}
plt.rc('font', **font)
plt.rc('text', usetex=True)
但我想要使用Gentium Plus来获取文本字体和数字。这可能吗?
答案 0 :(得分:1)
您可以通过以下方式检查matplotlib中的可用字体..
import matplotlib.font_manager
list = matplotlib.font_manager.get_fontconfig_fonts()
names = [matplotlib.font_manager.FontProperties(fname=fname).get_name() for fname in list]
print names
要查看更多选项,您可以查看documentation
答案 1 :(得分:0)
感谢Denduluri我找到了Gentium的名字
import matplotlib
import matplotlib.pyplot as plt
font = {'family': 'serif', 'serif': ['Gentium Basic'], 'size': 10}
plt.rc('font', **font)
matplotlib.rcParams['mathtext.fontset'] = 'custom'
matplotlib.rcParams['mathtext.rm'] = 'Gentium Basic'
matplotlib.rcParams['mathtext.it'] = 'Gentium Basic:italic'
matplotlib.rcParams['mathtext.bf'] = 'Gentium Basic:bold'
但是,如果您将TeX用于数学公式,则可能需要使用与Gentium不同的字体,并且为重新定义它们所需的数字设置相同的样式。
from matplotlib.backends.backend_pgf import FigureCanvasPgf
matplotlib.backend_bases.register_backend('pdf', FigureCanvasPgf)
pgf_with_custom_preamble = {
"font.family": "serif", # use serif/main font for text elements
"text.usetex": True, # use inline math for ticks
"pgf.preamble": [
"\\usepackage{mathpazo}",
"\\usepackage{gentium}",
"\\DeclareSymbolFont{sfnumbers}{T1}{gentium}{m}{n}",
"\\SetSymbolFont{sfnumbers}{bold}{T1}{gentium}{bx}{n}",
"\\DeclareMathSymbol{0}\mathalpha{sfnumbers}{\"30}",
"\\DeclareMathSymbol{1}\mathalpha{sfnumbers}{\"31}",
"\\DeclareMathSymbol{2}\mathalpha{sfnumbers}{\"32}",
"\\DeclareMathSymbol{3}\mathalpha{sfnumbers}{\"33}",
"\\DeclareMathSymbol{4}\mathalpha{sfnumbers}{\"34}",
"\\DeclareMathSymbol{5}\mathalpha{sfnumbers}{\"35}",
"\\DeclareMathSymbol{6}\mathalpha{sfnumbers}{\"36}",
"\\DeclareMathSymbol{7}\mathalpha{sfnumbers}{\"37}",
"\\DeclareMathSymbol{8}\mathalpha{sfnumbers}{\"38}",
"\\DeclareMathSymbol{9}\mathalpha{sfnumbers}{\"39}",
"\\DeclareMathSymbol{,}\mathalpha{sfnumbers}{\"2C}"
]
}
matplotlib.rcParams.update(pgf_with_custom_preamble)