Reputation: 1189
I'm trying to use Gentium Plus as the main font in matplotlib, especially for the numbers. The following works in order to use Palatino for everything, which is fine for the math font.
import matplotlib.pyplot as plt
font = {'family': 'serif', 'serif': ['Palatino'], 'size': 10}
plt.rc('font', **font)
plt.rc('text', usetex=True)
But I would like to have Gentium Plus for the text font and numbers. Is this possible?
Upvotes: 2
Views: 2009
Reputation: 1189
Thanks to Denduluri I found the name for 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'
However, if you're using TeX for math formulas you probably need to use a different font than Gentium and in order to have the same style for the numbers you need to redefine them.
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)
Upvotes: 0
Reputation: 309
You can check the available fonts in matplotlib by the following..
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
To check for more options you can check the documentation
Upvotes: 1