カスタムフォントでプロットを作成する

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Python の Matplotlib ライブラリを使ってカスタムフォントでプロットを作成する方法を学びます。また、プロットのフォントファミリをカスタマイズするために LaTeX を使うことができるpgf.texsystemパラメータについても紹介します。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

Matplotlib をインポートして pgf.texsystem パラメータを設定する

まず、Matplotlib ライブラリをインポートして、pgf.texsystemパラメータをpdflatexに設定する必要があります。このパラメータを使うと、LaTeX を使ってプロットのフォントファミリをカスタマイズできます。

import matplotlib.pyplot as plt

plt.rcParams.update({
    "pgf.texsystem": "pdflatex",
})

フォントファミリを定義する

次に、プロットで使用したいフォントファミリを定義する必要があります。この例では、cmbrightフォントファミリを使用します。

plt.rcParams.update({
    "pgf.texsystem": "pdflatex",
    "pgf.preamble": "\n".join([
         r"\usepackage[utf8x]{inputenc}",
         r"\usepackage[T1]{fontenc}",
         r"\usepackage{cmbright}",
    ]),
})

プロットを作成する

これで、plt.subplots()関数を使ってプロットを作成できます。この例では、単純な折れ線グラフを作成します。

fig, ax = plt.subplots(figsize=(4.5, 2.5))

ax.plot(range(5))

プロットにテキストを追加する

ax.text()関数を使って、プロットにテキストを追加できます。この例では、異なるフォントファミリでテキストを追加します。

ax.text(0.5, 3., "serif", family="serif")
ax.text(0.5, 2., "monospace", family="monospace")
ax.text(2.5, 2., "sans-serif", family="sans-serif")
ax.set_xlabel(r"µ is not $\mu$")

レイアウトを調整してプロットを保存する

最後に、それぞれfig.tight_layout()fig.savefig()関数を使って、プロットのレイアウトを調整してファイルに保存することができます。

fig.tight_layout(pad=.5)

fig.savefig("pgf_texsystem.pdf")
fig.savefig("pgf_texsystem.png")

まとめ

この実験では、Python の Matplotlib ライブラリを使ってカスタムフォントでプロットを作成する方法を学びました。pgf.texsystemパラメータを使ってプロットのフォントファミリを設定し、ax.text()関数を使って異なるフォントファミリでテキストを追加しました。また、プロットのレイアウトを調整してファイルに保存する方法も学びました。