\text は matplotlib ラベルでは機能しません 質問する

\text は matplotlib ラベルでは機能しません 質問する

私は軸、タイトル、カラーバーのラベルにmatplotlibとLaTeXラベルを使用しています。

ほとんどの場合、非常にうまく機能しますが、\text を使用する数式がある場合は問題が発生します。

非常に簡単な例を一つ挙げます。

from matplotlib import pyplot as plt
plt.plot([1,2,3])
plt.title(r"$f_{\text{cor, r}}$")

plt.show()

次のようなエラーメッセージが表示されます:

IPython/core/formatters.py:239: FormatterWarning: Exception in image/png formatter: 
f_{\text{1cor, r}}
   ^
Unknown symbol: \text (at char 3), (line:1, col:4)
  FormatterWarning,

そこに \text を使用する簡単な方法はありますか?

ベストアンサー1

\text動作しません。アムスマスパッケージ (matplotlib の数式レンダリング エンジンである mathtext には含まれていません)。したがって、基本的には 2 つのオプションがあります。

  • ラテックスベースのフォントレンダリングを使用する
from matplotlib import pyplot as plt
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}'] #for \text command
plt.plot([1,2,3])
plt.title(r"$f_{\text{cor, r}}$")
plt.show()
  1. mathtextを使用するが、\mathrm代わりに使用する\text
from matplotlib import pyplot as plt
import matplotlib as mpl
mpl.rcParams['text.usetex'] = False  # not really needed
plt.plot([1,2,3])
plt.title(r"$f_{\mathrm{cor, r}}$")
plt.show()

後者のアプローチでは、次のような図が作成されます。コマンドとは異なり、環境内のスペースは考慮されないここに画像の説明を入力してください
ことに注意してください。変数間にさらにスペースが必要な場合は、LaTeX スタイルのコマンド ( 、、 ...)を使用する必要があります。\text\mathrm\<space>\;

おすすめ記事