はじめに
この実験では、Matplotlib を使って異なるプロパティを持つ文字列を連結する方法を学びます。連結とは、複数の文字列を 1 つの文字列に結合するプロセスです。これは、ビジュアライゼーション用の注釈やラベルを作成する際に便利です。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
Jupyter Notebook が読み込み終わるまで数秒待つことがあります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
最初の文字列を作成する
最初のステップは、~.Axes.text を使って最初の文字列を作成することです。この文字列を作成することで、連結プロセスの起点となります。以下のコードは、プロット上の位置 (0.1, 0.5) に赤文字の "Matplotlib" という文字列を持つ文字列を作成します。
text = ax.text(.1,.5, "Matplotlib", color="red")
その後の文字列を作成する
次のステップは、~.Axes.annotate を使ってその後の文字列を作成することです。この関数を使うことで、前の文字列に対して文字列を配置することができます。以下のコードは、前の文字列の右に配置される 3 つの文字列を作成します。
text = ax.annotate(
" says,", xycoords=text, xy=(1, 0), verticalalignment="bottom",
color="gold", weight="bold") ## custom properties
text = ax.annotate(
" hello", xycoords=text, xy=(1, 0), verticalalignment="bottom",
color="green", style="italic") ## custom properties
text = ax.annotate(
" world!", xycoords=text, xy=(1, 0), verticalalignment="bottom",
color="blue", family="serif") ## custom properties
文字列をカスタマイズする
様々なプロパティを使って、文字列をカスタマイズすることができます。前のコードブロックでは、各文字列を作成する際に色、太さ、スタイル、フォントファミリのプロパティを設定しました。必要な外観を実現するために、さまざまなプロパティを試してみることができます。
プロットを表示する
すべての文字列を作成してカスタマイズしたら、plt.show() を使ってプロットを表示できます。以下のコードブロックに、プロットの完全なコードを示します。
import matplotlib.pyplot as plt
plt.rcParams["font.size"] = 20
ax = plt.figure().add_subplot(xticks=[], yticks=[])
## text() で作成した最初の単語。
text = ax.text(.1,.5, "Matplotlib", color="red")
## その後の単語は、annotate() を使って前の単語に対して配置されます。
text = ax.annotate(
" says,", xycoords=text, xy=(1, 0), verticalalignment="bottom",
color="gold", weight="bold") ## カスタムプロパティ
text = ax.annotate(
" hello", xycoords=text, xy=(1, 0), verticalalignment="bottom",
color="green", style="italic") ## カスタムプロパティ
text = ax.annotate(
" world!", xycoords=text, xy=(1, 0), verticalalignment="bottom",
color="blue", family="serif") ## カスタムプロパティ
plt.show()
まとめ
この実験では、Matplotlib を使って異なるプロパティを持つ文字列を連結する方法を学びました。この手法を使って、ビジュアライゼーション用のカスタムアノテーションやラベルを作成することができます。各文字列をカスタマイズすることで、視覚的に魅力的で情報が豊富なプロットを作成できます。