1

My question is related to this question.

I want to display for instance $\tilde{b}$ as ylabel in a Matplotlib plot.

MWE

import matplotlib
import matplotlib.pyplot as plt
matplotlib.rc('text', usetex=True)
plt.figure(1)
plt.plot(np.array([0, 1]), np.array([0, 1]))
plt.ylabel('$\tilde{b}$')
plt.show()

The result is that it just shows

ilde b

on the axis. I thought it was related to the fact that b is a consonant, but is does not work either with vowels.

What can I do?

Karlo
  • 1,630
  • 4
  • 33
  • 57

1 Answers1

2

You get that result because in the string you want to render as the label, '$\tilde{b}$', Python recognizes \t as a special character: a horizontal tab.

It is not the only special character. Another prominent example is \n, which represents a line break. The complete list of special characters can be found in section "String and Bytes literals" of the Python Language Reference.

Section "Strings" in the Python Tutorial notes:

If you don’t want characters prefaced by \ to be interpreted as special characters, you can use raw strings by adding an r before the first quote:

So you get the desired output if instead of

plt.ylabel('$\tilde{b}$')

you use

plt.ylabel(r'$\tilde{b}$')

For what it's worth, the line matplotlib.rc('text', usetex=True) in your code (which requires a LaTeX installation in addition to just Matplotlib) is not necessary to reproduce the behavior.

john-hen
  • 4,410
  • 2
  • 23
  • 40