【Python】matplotlibで軸ラベルに上付き・下付き文字を表示する
matplotlibでグラフを作成したときに、軸ラベルに数式や単位など上付き・下付き文字を表示したい時があります。matplotlibで表示する方法について説明します。
- 2021.01.09 初版公開
- 2021.09.24 リライト
上付き・下付き文字の書き方
軸ラベルに上付き・下付き文字を表示するには、LaTeX形式で記述します。
import matplotlib.pyplot as plt
x = ["$N_{1}$", "$N_{2}$"]
y = [100, 150]
# 棒グラフを表示
plt.barh(x, y)
plt.show()
- 出力
これは軸ラベル以外でも使えますので、例えばタイトルで表示したい場合は、上記コードのplt.show()
の前に
plt.title("Population of $N_{1}$ and $N_{2}$")
などと記述します。
上付き・下付き文字以外の書き方
LaTeX形式で記述することから、ギリシャ文字や数式も表示できます。
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
x = np.linspace(-5, 5, 100)
y0 = stats.norm.cdf(x, 0, 1)
y1 = stats.norm.cdf(x, 0, 0.5)
y2 = stats.norm.cdf(x, 0, 2)
plt.plot(x, y0, label=r"$\sigma = 1$")
plt.plot(x, y1, label=r"$\sigma = 0.5$")
plt.plot(x, y2, label=r"$\sigma = 2$")
plt.title(r"plot of $f(x) = \int_{-\infty}^{x}(\frac{1}{\sqrt{2 \pi}\sigma} e^{\frac{t^{2}}{\sigma^{2}}})\mathrm{d}t$")
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1)
plt.show()
- 出力
注意点
LaTex形式を使う場合は、文字列の中なのでバックスラッシュを2つ重ねてエスケープする必要があります。特にLaTeX形式はバックスラッシュを多用するので、できればraw文字列を表すrを前につけておいたほうがよいでしょう。そうすることでエスケープせずに済み、見やすくなります。
フォントの設定
日本語フォントの設定方法について、独立したエントリで書き直しました。
参考
Numpy等の基本的な使い方について説明した書籍です。第5章でMatplotlibの使い方についても説明されています。
リンク
ディスカッション
コメント一覧
まだ、コメントがありません