ノート
完全なサンプルコードをダウンロードするには、ここをクリックしてください
LaTeX を使用したテキスト レンダリング#
Matplotlib は、LaTeX を使用してテキストをレンダリングできます。これは
、rcParams で設定するか、個々のオブジェクトでプロパティを True に設定することで有効になります。LaTeX によるテキスト処理は、Matplotlib の非常に有能なmathtextよりも遅くなりますが、さまざまな LaTeX パッケージ (フォント パッケージ、数学パッケージなど) を使用できるため、より柔軟です。特に、メイン ドキュメントと同じフォントを図で使用するように注意すると、結果は驚くべきものになる可能性があります。text.usetex : True
usetex
Text
Matplotlib の LaTeX サポートには、機能するLaTeXのインストールが必要です。*Agg バックエンドの場合、さらにdvipngが必要です。PS バックエンドの場合、
PSfrag、dvips、およびGhostscriptが追加で必要です。PDF および SVG バックエンドの場合、LuaTeX が存在する場合、いくつかの後処理ステップを高速化するために使用されますが、TeX 文字列自体の解析には使用されないことに注意してください (LaTeX のみがサポートされています)。これらの外部依存関係の実行可能ファイルはすべて、PATH
.
少数のフォント ファミリ ( PSNFSSスキームで定義) のみがサポートされています。これらは、対応する LaTeX フォント選択コマンドと、自動的に使用される LaTeX パッケージとともにここにリストされています。
ジェネリックファミリー |
フォント |
---|---|
セリフ ( |
Computer Modern Roman、Palatino ( |
サンセリフ ( |
コンピューター モダンセリフ、ヘルベチカ ( |
筆記体 ( |
ザップチャンスリー ( |
モノスペース ( |
コンピューターの最新タイプライター、クーリエ ( |
デフォルトのフォント ファミリ (LaTeX パッケージをロードする必要がない) は Computer Modern です。他のすべてのファミリは Adobe フォントです。Times と Palatino にはそれぞれ独自の数学フォントが付属していますが、他の Adobe serif フォントは Computer Modern 数学フォントを使用しています。
LaTeX を有効にしてフォントを選択するには、次のようにします。
plt.rcParams.update({
"text.usetex": True,
"font.family": "Helvetica"
})
または同等に、matplotlibrcを次のように設定します。
text.usetex : true
font.family : Helvetica
代わりfont.family
に、ジェネリック ファミリ名の 1 つに設定してから、対応するジェネリック ファミリを構成することもできます。例えば:
plt.rcParams.update({
"text.usetex": True,
"font.family": "sans-serif",
"font.sans-serif": "Helvetica",
})
(これは、Matplotlib 3.5 までは必須のアプローチでした)。
TeX を使用した数式のレンダリングの標準的な例を次に示し ます。
表示演算モード ( ) はサポートされていませんが、上記のデモのようにコマンドを追加すると、同じ結果が得られることに注意してください。$$ e=mc^2 $$
\displaystyle
非 ASCII 文字 (上記の y ラベルの度記号など) は、inputencでサポートされている範囲でサポートされています。
ノート
usetex 以外のケースとの一貫性を保つために、Matplotlib では改行を特別に扱い、単一の改行が (標準の LaTeX で空白として解釈されるのではなく) 改行を生成するようにします。
Matplotlib はアンダースコアパッケージを使用して、アンダースコア ( _
) がテキスト モードで「そのまま」出力されるようにします (標準の LaTeX のようにエラーを引き起こすのではなく)。アンダースコアは、数学モードでも添字を導入します。
ノート
次のような特定の文字は、TeX で特別なエスケープが必要です。
# $ % & ~ ^ \ { } \( \) \[ \]
rcParams["text.usetex"]
したがって、これらの文字は(デフォルト: )に応じて異なる動作をし
ますFalse
。上で述べたように、アンダースコア ( _
) は、数学モード以外ではエスケープする必要はありません。
PostScript オプション#
新しい LaTeX ドキュメントに埋め込むことができるカプセル化された PostScript (EPS) ファイルを生成するために、Matplotlib のデフォルトの動作は出力を抽出することです。これにより、EPS ファイルで違法な LaTeX で使用されるいくつかの PostScript 演算子が削除されます。この手順では、テキストが粗くラスタライズされてビットマップに変換され、標準の PostScript のようにスケーラブルではなく、テキストが検索できないため、一部のユーザーには受け入れられない結果が生成されます。回避策の 1 つは、rc 設定でrcParams["ps.distiller.res"]
(デフォルト: 6000
) をより高い値 (おそらく 6000) に設定することです。これにより、より大きなファイルが生成されますが、見栄えが良くなり、適切にスケーリングされる場合があります。PopplerまたはXpdfを必要とするより良い回避策は、rcParams["ps.usedistiller"]
(デフォルト: None
) を変更することで有効にできます。xpdf
. この代替手段は、テキストをラスタライズせずに PostScript を生成するため、適切にスケーリングされ、Adobe Illustrator で編集でき、pdf ドキュメント内のテキストを検索できます。
考えられるハングアップ#
Windows では、
PATH
環境変数を変更して、latex、dvipng、および Ghostscript 実行可能ファイルを含むディレクトリを含める必要がある場合があります。詳細については、環境変数および Windowsでの環境変数の設定を参照してください。Computer Modern フォントで MiKTeX を使用し、*Agg と PNG の結果がおかしい場合は、MiKTeX/Options に移動し、フォーマット ファイルを更新します。
Ubuntu および Gentoo では、ベースの texlive インストールは type1cm パッケージに同梱されていません。他の LaTeX ディストリビューションにバンドルされているすべての機能を利用するには、いくつかの追加パッケージをインストールする必要がある場合があります。
Matplotlib がテキスト レイアウトに dvi ファイルを直接使用するように、ある程度の進歩がありました。これにより、*Agg および PS バックエンドだけでなく、pdf および svg バックエンドでのテキスト レイアウトに LaTeX を使用できます。将来的には、LaTeX のインストールが唯一の外部依存関係になる可能性があります。
トラブルシューティング#
.matplotlib/tex.cache
ディレクトリを削除してみてください。場所がわからない場合は、 matplotlib の構成とキャッシュ ディレクトリの場所を.matplotlib
参照してください。LaTeX、dvipng、ghostscript がそれぞれ動作していることを確認してください。
PATH
.実行しようとしていることが LaTeX ドキュメントで可能であること、LaTeX 構文が有効であること、および意図しないエスケープ シーケンスを避けるために必要に応じて生の文字列を使用していることを確認してください。
rcParams["text.latex.preamble"]
(デフォルト:''
) は公式にはサポートされていません。このオプションは、多くの柔軟性を提供し、問題を引き起こす多くの方法を提供します。問題をメーリング リストに報告する前に、このオプションを無効にしてください。それでもヘルプが必要な場合は、ヘルプを参照してください。