Maplotlib の凡例等でLaTeXのバックスラッシュを機能させる

Maplotlib でグラフを描く際,凡例やタイトル,軸ラベル等に $\LaTeX$ 表記を使おうと思って \(バックスラッシュ)を書いてもうまく機能しない場合がある。(\ がエスケープシークエンスと認識されてしまうらしい。)これをなんとかしようという話。検索すればすぐわかるんだけど,備忘録として。

必要なモジュールの import

In [1]:
# NumPy も使います
import numpy as np

# Matplotlib でグラフを描きます
import matplotlib.pyplot as plt

# グラフを SVG で Notebook にインライン表示させる設定
%config InlineBackend.figure_formats = ['svg']

\ が機能しない例

\theta が $\theta$ とならない。

In [2]:
x = np.linspace(0, 2*np.pi, 101)
key = '$\theta_0 = 0$'
plt.xlabel('$\theta$')
plt.ylabel('$\sin \theta$')
plt.title('$\sin \theta$')
plt.plot(x, np.sin(x), label = key);
plt.legend();

\ を機能させるための対策

文字列の前に r をつけるか,\\\ にするか,どちらかで機能するようになる。

In [3]:
# \ のかわりに \\ を使う例
key = '$\\theta_0 = 0$'
plt.xlabel('$\\theta$')

# 文字列の前に r をつける例
plt.ylabel(r'$\sin \theta$')
plt.title(r'$\sin \theta$')

plt.plot(x, np.sin(x), label = key);
plt.legend();