1

I want all text in my plots to be Times New Roman, so I did the following:

import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "Times New Roman" # change default font

and I only want the '(x)' and '(z)' portions of my labels to be italics, so I did:

plt.xlabel('Underutilization $\it{(x)}$', labelpad=15)
plt.ylabel('Productivity $\it{(z)}$', labelpad=15)

However, what I end up with upon plotting is 'Underutilization' in Times New Roman, but '(x)' in an italicized sans serif (the default of Python). Same with the ylabel.

How can I remedy this?

Andrea
  • 607
  • 8
  • 21

1 Answers1

1

The text inside the $ signs is dictated by matplotlib’s mathtext (unless you are using LaTex), and is controlled by the rcParam mathtext.fontset which is outlined in the documentation by

mathtext.fontset: ‘dejavusans’ (default)
  ‘dejavuserif’, ‘cm’ (Computer Modern), ‘stix’,
  ‘stixsans’ or ‘custom’

Using LaTex for the text rendering offers more flexibility in font choice, and I believe would support Times New Roman. If you use LaTex then it should adjust the math font when you adjust font.family.

William Miller
  • 9,839
  • 3
  • 25
  • 46