PGF generated plot via Matplotlib and using relative font sizes when input to LaTeX

I can produce plots on matplotlib and export them to pgf successfully. But I believe that by first defining a base font size on matplotlib rcParams (11pt for example), and then defining things like axes tick labels to be \small, they become fixed at 10 pt when I insert them to LaTeX. I believe this because when I change the class font size, the plot text does not change.

Now let's say I use the same plot in a different document, poster, or beamer presentation. I would like the axes tick label to be \small (relative to base font), and title to be \normalsize for example.

I believe the answer lies in the mpl.rcParams.update() method.

Here is some of Python code, and below, the .tex code. When I change the class font size, ideally the plot font would scale with it.

import matplotlib as mpl
mpl.use('pgf')
import matplotlib.pyplot as plt

import numpy as np

mpl.rcParams.update({
"text.usetex": True,
"pgf.texsystem": "xelatex",
"pgf.rcfonts": False,
"font.family": "sans-serif",
'figure.titlesize': 'large',
'ytick.labelsize':   'small',
"font.serif": [],
"font.sans-serif": [],
"font.monospace": [],
"figure.figsize": [3,4],
"pgf.preamble": [
r"\usepackage[utf8x]{inputenc}",
r"\usepackage[T1]{fontenc}",
],
})
# mpl.rc('text.latex', preamble=r'\usepackage{kpfonts}')

t = np.linspace(0,5)
x = np.exp(-t)*np.sin(2*t)
plt.plot(t,x)

plt.title('TESTING title size')
plt.ylabel('TESTING Y label size')
plt.xlabel('TESTING X label size')

plt.savefig("example_plot.pgf")


-- LaTeX code below

\documentclass[17pt]{scrartcl}
%\usepackage{kpfonts}
\usepackage{cmbright}
\usepackage{pgf}
\begin{document}
123456 Example plot below (normal sized text) {\small (Small Text)} {\footnotesize Smaller! Text}\\
\input{example_plot.pgf}
\end{document}


Any insight is appreciated!

• Please provide some example code (both for matplotlib and for LaTeX) that reproduces the answer, i.e., a short example document with a graph in it where the font sizes are incorrect. This allows potential answerers to focus on the issue instead of spending time trying to recreate your situation. – Marijn Sep 13 at 19:56
• I'll try to make a MWE as soon as possible... I thought that this might be a common question with an easy fix. – likethevegetable Sep 13 at 21:06
• Edited it to include sample code. – likethevegetable Sep 13 at 21:25
• I'm not sure this is possible, as matplotlib produces code such as \fontsize{10}{12} \selectfont foo, i.e. the fontsize is set explicitly. I don't really think the output is intended for flexibility at all. Have you tried matplotlib2tikz? – Torbjørn T. Sep 13 at 22:23
• @likethevegetable Thanks for the code, the question has improved a lot. – Marijn Sep 14 at 6:34