YutaKa Notebook | Python徹底図解ブログ!

Python の文法やモジュール、Python関連のAPIについて画像・ソースコード付きで徹底解説!

matplotlib:pyplot.text()よく使うもの徹底解説!

今回はmatplotlibで、グラフ内にテキストを表示する方法を紹介します。

公式ドキュメントを参考にしたので、興味のある方はチェックしてみて下さい。

はじめに

今回は、pyplot.text()を使用して、グラフ内にテキストを表示する方法を紹介します。

pyplotってなんだ?という方はこちらの記事もご覧ください!  

yutaka01.hatenablog.com

text()の概要

pyplot.text()を使用すると、グラフ内にテキストを表示することができます。

簡単な例として、適当なプロットに座標を表示してみると、こんなかんじです。

f:id:YutaKa:20200108073933p:plain

テキストのサイズ変更と色付けを応用するとこんなこともできます。

f:id:YutaKa:20200108073946p:plain

グラフ内のテキストは、グラフで伝えたいことを強調するために重要な要素です。

自由にテキストを追加できるようにpyplot.text()の基本操作を覚えてしまいましょう!

plot.text()基本

引数で座標とテキストの内容を指定する次の書き方が基本です。

plt.text(x, y, "str" ) # テキスト入力
text()の引数

① テキストを表示する座標

② テキストの内容

text()使用例

簡単な例として、次のプロットに座標を表示してみます。

plt.figure(figsize = (3,3)) # 図のサイズ指定
plt.plot(x, y, "ro")        # プロット作成
plt.axis([-0.1,3,-0.1,3])   # 軸の最大、最小値指定

f:id:YutaKa:20200108074003p:plain

これに、テキストを表示します。

plt.text(x, y, "(x,y)=({},{})".format(x,y) ) # テキスト入力

ここでは、format文を使用して、s = "(x,y)=({},{})".format(x,y)を渡しています。

結果は、次の通りです。

f:id:YutaKa:20200108074021p:plain

text()の設定

pyplot.text()では、追加の引数を与えることで、書式を変更することができます。

次のように、座標、表示テキストに追加して、キーワード引数で設定する書式を渡します。

plt.text(x, y, "str" , key1 = val1, key2 = val2,...) # 書式設定

実は、keyとvalの組み合わせが、たくさんありすぎて必要なものを探すのが大変です。

そこで、使用頻度が高そうな書式設定方法をまとめました。

今回紹介

★ サイズの変更

★ 色の変更

★ 水平方向の文字位置

★ 垂直方向の文字位置

★ 斜体に変更

★ テキストの回転

サイズの変更:size or fontsize

val: デフォルトのフォントとの相対的な大きさで指定する場合

'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'

例として、次のコードで各サイズを並べて表示してみましょう。

size_list = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'] 
for i, size in enumerate(size_list):
    plt.text(i, i, size, size =size  ) #  fontsize or size = size

f:id:YutaKa:20200108074039p:plain

val: 数字(pt)で指定する場合

size = 数値 とすることで、サイズを pt で指定できます。

例として、次のコードで各サイズを並べて表示してみましょう。

size_list = [ 5, 10, 15, 20, 25, 30] 
for i, size in enumerate(size_list): plt.text(i, i, size, size =size ) # fontsize or size = size

f:id:YutaKa:20200108074059p:plain

色の変更:colorまたは c

次の既定の短縮文字を val として与える方法がおススメです。

'b', 'g', 'r', 'c', ‘m', 'y', 'k' , 'w'

例として、次のコードで各色を並べて表示してみましょう。

color_dict = {
    'b': 'blue',
    'g': 'green',
    'r': 'red', 
    'c': 'cyan',
    'm': 'magenta',
    'y': 'yellow',
    'k': 'black',
    'w': 'white'
}

for i, color in enumerate(color_dict):
    plt.text(i, i, color_dict[color], c = color, size = "xx-large"  ) # color or c = color

f:id:YutaKa:20200108074127p:plain

水平方向の文字位置:horizontalalignment or ha

指定した座標に対する水平方向の配置位置を指定できます。

'center', 'right', 'left'

これらはワードでいうところの、中央揃え、右揃え、左揃えと同じようなものです。

例として、次のコードで各位置を並べて表示してみます。

(比較のために、x座標を揃えて、縦線を引いています)

ha_list = ['center', 'right', 'left'] 
for i, ha in enumerate(ha_list):
    plt.plot(1.5, i, "o")
    plt.text(1.5, i, ha, ha = ha , size = "xx-large"  ) #  horizontalalignment or ha

f:id:YutaKa:20200108074136p:plain

垂直方向の文字位置:verticalalignment or va

指定した座標に対する垂直方向の配置位置を指定できます。

'center', 'top', 'bottom', 'baseline', 'center_baseline'

例として、次のコードで各位置を並べて表示してみます。

(比較のために、y座標を揃えて、横線を引いています)

va_list = ['center', 'top', 'bottom', 'baseline', 'center_baseline'] 
for i, va in enumerate(va_list):
    plt.plot(i, 1.5, "o")
    plt.text(i, 1.5, va, va = va , size = "xx-large"  ) #  verticalalignment or va

f:id:YutaKa:20200108074152p:plain

斜体に変更:fontstyle or style

斜体を指定できます。

'normal', 'oblique'

例として、次のコードで斜体を表示してみます。

style_list = ['normal', 'oblique'] 
for i, style in enumerate(style_list):
    plt.text(i, i, style, style = style , size = "xx-large"  ) #  fontstyle or style

f:id:YutaKa:20200108074207p:plain

テキストの回転:rotation

文字の回転角を数字(°)で指定できます。

90°回転は'vertical'、0°回転は'horizontal'でも指定できます。

例として、次のコードで文字を回転させてみましょう。

r_list = [45, 90, 180, 270, 360, 'vertical', 'horizontal'] 
for i, rotation in enumerate(r_list):
plt.text(i, i, rotation, rotation = rotation , size = "xx-large" )

f:id:YutaKa:20200204212349p:plain

おまけ

書式のvalをリストに格納しておけば、for文で回して1文字ごとに書式を変更することができます。

これを螺旋やsinの曲線上に乗っければ、冒頭紹介したグラフを作成することができます。

f:id:YutaKa:20200108074227p:plain

他にも文字の配置やサイズを工夫することで、いろいろなことに応用ができます。

例えば、間違い文字探しなんかも作れます。

f:id:YutaKa:20200204212942p:plain

おわりに

pyplot.text()を使用すると、グラフ内にテキストを表示することができます。

グラフ内のテキストは、グラフで伝えたいことを強調するために重要な要素です。

自由にテキストを追加できるようにpyplot.text()の基本操作を覚えてしまいましょう!

text()の引数

① テキストを表示する座標

② テキストの内容

※さらに追加のキーワード引数で、書式を変更することができる!

他にもこんな記事や書籍がおススメです!

www.yutaka-note.com

www.yutaka-note.com