set_xticklabels changes font when text.usetex is enabled

If text.usetex is enabled, then setting tick labels using Axes.set_xticklabels causes the font to be changed (as if text.usetex were disabled) for that axis.

import numpy as np
from matplotlib import pyplot as pt, rcParams

rcParams['text.usetex'] = True

x = np.linspace(0,10,101)
y = np.sin(x)

fig = pt.figure(figsize=(3.375, 2.5))
ax = fig.add_axes([.15,.15,.8,.8])

pt.plot(x, y)
pt.xlabel(r'$\alpha$')
pt.savefig('mpl_font_testA.png')

ax.set_xticklabels(np.arange(0,11,2))
pt.savefig('mpl_font_testB.png')

Example output is below.

Before calling ax.set_xticklabels:
mpl_font_testA.png

After calling ax.set_xticklabels:
mpl_font_testB.png

Author: Fantashit

1 thought on “set_xticklabels changes font when text.usetex is enabled

  1. After reading through the code for ScalarFormatter, it looks like the solution is to include “$” delimiters around the labels, e.g.:

    ax.set_xticklabels(["$%%d$"%%f for f in np.arange(0,11,2)])
    

Comments are closed.