matplotlibでグラフにtextを表示する方法を解説

Python

matplotlibでグラフに注釈やラベルを追加するにはtext()メソッドを利用します。この記事では、text()メソッドの基本的な使い方から様々な設定オプションまで詳しく解説します。

基本的な使い方

text()メソッドを使うと、グラフ上の指定した座標に任意のテキストを表示できます。基本的な構文はplt.text(x, y, "表示するテキスト")です。

以下のコードは、グラフ上に基本的なテキストを表示する例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)

# テキストの追加
plt.text(5, 0.5, "This is a sine wave")

plt.title("Basic Text Example")
plt.grid(True)
plt.show()

# 出力: グラフ上の(5, 0.5)の位置に「This is a sine wave」というテキストが表示される

各種設定

text()メソッドには多くの設定オプションがあり、テキストの見た目や位置を細かく調整できます。以下では主要な設定項目を解説します。

フォント設定

テキストのフォントに関する設定は、読みやすさや視覚的な階層構造を作るのに役立ちます。

fontstyle

fontstyleパラメータを使うと、テキストのスタイル(通常、イタリック体など)を設定できます。

以下のコードは、異なるフォントスタイルを適用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)

# 異なるfontstyleの適用
plt.text(2, 0.8, "Normal text", fontstyle='normal')
plt.text(5, 0.8, "Italic text", fontstyle='italic')
plt.text(8, 0.8, "Oblique text", fontstyle='oblique')

plt.title("Font Style Examples")
plt.grid(True)
plt.show()

# 出力: 3つの異なるフォントスタイルのテキストがグラフ上に表示される

fontweight

fontweightパラメータを使うと、テキストの太さを調整できます。

以下のコードは、異なるフォントの太さを適用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)

# 異なるfontweightの適用
plt.text(2, 0.8, "Light", fontweight='light')
plt.text(4, 0.8, "Normal", fontweight='normal')
plt.text(6, 0.8, "Bold", fontweight='bold')
plt.text(8, 0.8, "Heavy", fontweight='heavy')

plt.title("Font Weight Examples")
plt.grid(True)
plt.show()

# 出力: 4つの異なる太さのテキストがグラフ上に表示される

fontsize

fontsizeパラメータを使うと、テキストのサイズを調整できます。

以下のコードは、異なるフォントサイズを適用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)

# 異なるfontsizeの適用
plt.text(2, 0.8, "Small (10)", fontsize=10)
plt.text(5, 0.8, "Medium (14)", fontsize=14)
plt.text(8, 0.8, "Large (20)", fontsize=20)

plt.title("Font Size Examples")
plt.grid(True)
plt.show()

# 出力: 3つの異なるサイズのテキストがグラフ上に表示される

fontfamily

fontfamilyパラメータを使うと、テキストのフォントファミリーを設定できます。

以下のコードは、異なるフォントファミリーを適用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)

# 異なるfontfamilyの適用
plt.text(2, 0.8, "Serif", fontfamily='serif')
plt.text(5, 0.8, "Sans-Serif", fontfamily='sans-serif')
plt.text(8, 0.8, "Monospace", fontfamily='monospace')

plt.title("Font Family Examples")
plt.grid(True)
plt.show()

# 出力: 3つの異なるフォントファミリーのテキストがグラフ上に表示される

色の設定

colorパラメータを使うと、テキストの色を設定できます。色の指定には、名前、RGB値、HEX値などが使えます。

以下のコードは、異なる色を適用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)

# 異なるcolorの適用
plt.text(2, 0.8, "Red", color='red')
plt.text(4, 0.8, "Green", color='green')
plt.text(6, 0.8, "Blue", color='blue')
plt.text(8, 0.8, "Custom", color='#8A2BE2')  # ブルーバイオレット

plt.title("Text Color Examples")
plt.grid(True)
plt.show()

# 出力: 4つの異なる色のテキストがグラフ上に表示される

位置の調整

テキストの位置を細かく調整するためのパラメータもあります。

horizontalalignment

horizontalalignment(またはha)パラメータを使うと、テキストの水平方向の配置を設定できます。

以下のコードは、異なる水平配置を適用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)
plt.axvline(x=5, color='gray', linestyle='--')  # 位置の基準線

# 異なるhorizontalalignmentの適用
plt.text(5, 0.9, "Left aligned", horizontalalignment='left')
plt.text(5, 0.6, "Center aligned", horizontalalignment='center')
plt.text(5, 0.3, "Right aligned", horizontalalignment='right')

plt.title("Horizontal Alignment Examples")
plt.grid(True)
plt.show()

# 出力: 3つの異なる水平配置のテキストがグラフ上に表示される

verticalalignment

verticalalignment(またはva)パラメータを使うと、テキストの垂直方向の配置を設定できます。

以下のコードは、異なる垂直配置を適用した例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)
plt.axhline(y=0, color='gray', linestyle='--')  # 位置の基準線

# 異なるverticalalignmentの適用
plt.text(2, 0, "Top aligned", verticalalignment='top')
plt.text(5, 0, "Center aligned", verticalalignment='center')
plt.text(8, 0, "Bottom aligned", verticalalignment='bottom')

plt.title("Vertical Alignment Examples")
plt.grid(True)
plt.show()

# 出力: 3つの異なる垂直配置のテキストがグラフ上に表示される

応用例:複数の設定を組み合わせる

実際の使用では、複数の設定を組み合わせることが多いです。以下は、様々な設定を組み合わせた応用例です。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフの作成
plt.figure(figsize=(10, 6))
plt.plot(x, y)

# 複数の設定を組み合わせたテキスト
plt.text(5, 0.8, "Important Point", 
         fontsize=15, 
         fontweight='bold', 
         color='red',
         horizontalalignment='center',
         verticalalignment='center',
         bbox=dict(facecolor='yellow', alpha=0.3, edgecolor='red', boxstyle='round'))

plt.title("Combined Text Properties Example")
plt.grid(True)
plt.show()

# 出力: 複数の設定を組み合わせた装飾されたテキストがグラフ上に表示される

まとめ

matplotlibのtext()メソッドを使うと、グラフに様々なスタイルのテキストを追加できます。基本的な使い方は簡単ですが、フォントスタイル、サイズ、色、配置などの設定を組み合わせることで、より効果的なデータの可視化が可能になります。

この記事で紹介した設定を活用して、読者にとって分かりやすくグラフを作成してみてください。

さらに詳しい情報は、matplotlibの公式ドキュメントを参照ください。

タイトルとURLをコピーしました