pythonの描画ライブラリである「matplotlib」において、ラベルに関するさまざまな設定方法を紹介します。
本記事では、以下の内容を紹介します。
この記事で分かること
- 軸ラベルの表示方法
- 軸ラベルのフォントサイズの変更方法
- 軸ラベルの位置の変更方法
- 2軸グラフのラベルを表示する方法
- データラベルを表示する方法
- 3dグラフにラベルを表示する方法
◆さまざまなグラフにラベルを表示する方法◆
- 棒グラフ(bar)にラベルを表示する方法
- 箱ひげ図(boxplot)にラベルを表示する方法
- 円グラフ(pie)にラベルを表示する方法
はじめに、グラフにラベルを表示する基本的な方法を紹介します。
そのあとで、ラベルに関するさまざまな設定方法や、さまざまなグラフにラベルを表示する方法を紹介します。
スポンサーリンク
matplotlibの軸ラベルの表示方法
はじめに、グラフにラベルを表示する基本的な方法を紹介します。
matplotlibには、簡易的にグラフを作成できる【pyplot.~~~】と、グラフに関する細かい設定が可能な【ax.~~~】の、2通りのグラフ描画方法があります。
それぞれのグラフ描画方法で、ラベルを表示するための関数が微妙に異なります(ほとんど同じですが)。
【 pyplot.~~~ 】
plt.xlabel('文字列') で、x軸のラベルを表示できます。
plt.ylabel('文字列') で、y軸のラベルを表示できます。
以下、【 plt.~~~ 】でラベルを表示するサンプルコードです。
### 軸ラベルの表示方法
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('X-label')
plt.ylabel('Y-label')
plt.show()
【 ax.~~~ 】
オブジェクト指向で、グラフを作成する方法です。
ax.set_xlabel('文字列') で、x軸のラベルを表示できます。
ax.set_ylabel('文字列') で、y軸のラベルを表示できます。
以下、【 ax.~~~ 】でラベルを表示するサンプルコードです。
### 軸ラベルの表示方法
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('X-label')
ax.set_ylabel('Y-label')
plt.show()
コード実行後表示されるグラフは、【 plt.~~~ 】【 ax.~~~ 】も同じになります。
なお、【 plt.~~~ 】【 ax.~~~ 】の2つのグラフ描画方法の違いについては、下記の記事で紹介しています。
matplotlibの2つのグラフ描画方法での、ラベルの表示方法をざっくり紹介しました。
オブジェクト指向でのグラフ描画方法【 ax.~~~ 】を覚えておいた方が応用がきくので、以降の例では、【 ax.~~~ 】を用いてグラフを作成していきます。
スポンサーリンク
matplotlibの軸ラベルのフォントサイズの変更方法
グラフの軸ラベルのフォントサイズを変更する方法を紹介します。
ax.set_xlabel( ) に、引数として fontsize= を指定することで、軸ラベルのフォントサイズを変更できます。
以下、サンプルコードです。
### 軸ラベルのフォントサイズの変更
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('X-label', fontsize=20)
ax.set_ylabel('Y-label', fontsize=20)
plt.show()
コード実行後、表示されるグラフはこちらになります。
軸目盛のサイズの変更方法
つぎに、グラフの軸目盛のサイズを変更する方法を紹介します。
ax.tick_params( ) に、引数として labelsize= を指定することで、軸目盛のサイズを変更できます。
以下、サンプルコードです。
### 軸目盛のサイズの変更
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('X-label')
ax.set_ylabel('Y-label')
ax.tick_params(labelsize=15)
plt.show()
コード実行後、表示されるグラフはこちらになります。
スポンサーリンク
matplotlibの軸ラベルの位置の変更方法
グラフのラベルの位置を変更する方法を紹介します。
ax.set_xlabel( ) に、引数として loc= を指定することで、ラベルの位置を変更できます。
以下、サンプルコードです。
### 軸ラベルの位置の変更方法
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('X-label',loc='left')
ax.set_ylabel('Y-label',loc='top')
plt.show()
コード実行後、表示されるグラフはこちらになります。
matplotlibの2軸グラフのラベルを表示する方法
2軸のグラフを作成し、それぞれの軸にラベルを表示する方法を紹介します。
以下、サンプルコードです。
### 2軸のグラフのラベルを表示
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, np.pi * 4, 100)
y1 = np.sin(x)
y2 = np.cos(x) * 10
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(x, y1, color='blue')
ax2.plot(x, y2, color='orange')
ax1.set_xlabel('x')
ax1.set_ylabel('sin(x)')
ax2.set_ylabel('cos(x)')
plt.show()
コード実行後、表示されるグラフはこちらになります。
> ax2 = ax1.twinx()
ax1の第二2軸に、ax2を設定しています。
> ax1.set_ylabel('sin(x)')
> ax2.set_ylabel('cos(x)')
第1軸、第2軸、それぞれに軸ラベルを設定しています。
スポンサーリンク
matplotlibでデータラベルを表示する方法
つぎに、データラベルを表示する方法について紹介します。
データラベルは、ax.text( )を用いて表示します。
引数として順番に、ラベルのx座標、ラベルのy座標、ラベル を渡します。
以下、サンプルコードです。
### データラベルを表示
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(10)
y = np.random.rand(10)
labels = ['No.'+str(num) for num in range(1,len(x)+1)]
fig, ax = plt.subplots()
ax.scatter(x, y, s=100)
for i, label in enumerate(labels):
ax.text(x[i], y[i],label)
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()
コード実行後、表示されるグラフはこちらになります。
> labels = ['No.'+str(num) for num in range(1,len(x)+1)]
リスト内包表記で、ラベルとして表示する文字列を作成しています。
内包表記については、下記の記事で紹介しています。
> for i, label in enumerate(labels):
> ax.text( x[ i ], y[ i ], label )
enumerate関数を用いて、インデックスと要素を同時に取得しています。
ax.text( )の引数に、ラベルのx座標 x[ i ]、ラベルのy座標 y[ i ]、ラベル label を指定しています。
enumerate関数については、下記の記事で紹介しています。
散布図を作成する方法については、下記の記事で紹介しています。
matplotlibで3dグラフにラベルを表示する方法
つぎに、3次元のグラフに軸ラベルを表示する方法を紹介します。
以下、サンプルコードです。
### 3次元グラフにラベルを表示
import matplotlib.pyplot as plt
import numpy as np
t = np.linspace(0, 4*np.pi)
x = np.sin(t)
y = np.cos(t)
z = t
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot(x, y, z)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
コード実行後、表示されるグラフはこちらになります。
> fig = plt.figure()
> ax = fig.add_subplot(projection='3d')
> ax.plot(x, y, z)
3次元グラフを描画しています。
> ax.set_xlabel('X')
> ax.set_ylabel('Y')
> ax.set_zlabel('Z')
3つの軸それぞれに、ラベルを表示しています。
スポンサーリンク
matplotlibで棒グラフ(bar)にラベルを表示する方法
ここからは、さまざまなグラフにラベルを表示する方法を紹介します。
はじめに、棒グラフにラベルを表示する方法を紹介します。
以下、サンプルコードです。
### 棒グラフにラベルを表示
import numpy as np
import matplotlib.pyplot as plt
x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 30, 40, 50]
y2 = [10, 15, 10, 15, 10]
fig, ax = plt.subplots()
bar1 = ax.bar(x, y1, label='y1', width=0.8, align='center')
bar2 = ax.bar(x, y2, label='y2', width=0.8, align='center',bottom=y1)
ax.legend()
# 軸ラベルを表示
ax.set_xlabel('X')
ax.set_ylabel('Y')
# データラベルを表示
for i in range(len(y1)):
ax.text(i, y1[i], y1[i])
plt.show()
コード実行後、表示されるグラフはこちらになります。
> ax.set_xlabel('X')
> ax.set_ylabel('Y')
軸ラベルを表示しています。
> for i in range( len( y1 ) ):
> ax.text( i, y1[ i ], y1[ i ] )
データラベルを表示しています。
ax.text( )の引数に、ラベルのx座標 i 、ラベルのy座標 y1[ i ]、ラベル y1[ i ] を指定しています。
この例では、棒グラフの下段のデータにしかデータラベルが表示されていません。
両方のデータにラベルをつけつつ、データラベルの位置も見やすく調整した例も紹介します。
以下、サンプルコードです。
### 棒グラフにラベルを表示
import numpy as np
import matplotlib.pyplot as plt
x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 30, 40, 50]
y2 = [10, 15, 10, 15, 10]
fig, ax = plt.subplots()
bar1 = ax.bar(x, y1, label='y1', width=0.8, align='center')
bar2 = ax.bar(x, y2, label='y2', width=0.8, align='center',bottom=y1)
ax.legend()
# 軸ラベルを表示
ax.set_xlabel('X')
ax.set_ylabel('Y')
# データラベルを表示
for i in range(len(y1)):
ax.text(i, y1[i]/2, y1[i])
ax.text(i, y1[i]+y2[i]/2, y2[i])
plt.show()
コード実行後、表示されるグラフはこちらになります。
> for i in range( len( y1 ) ):
> ax.text( i, y1[ i ]/2, y1[ i ] )
> ax.text( i, y1[ i ] + y2[ i ]/2, y2[ i ] )
ラベルのy座標を、y1[ i ]/2 とすることで、棒グラフの中央にデータラベルが表示されるようにしています。
なお、棒グラフの作成方法については、下記の記事で紹介しています。
matplotlibで箱ひげ図(boxplot)にラベルを表示する方法
箱ひげ図に軸ラベルを表示する方法を紹介します。
以下、サンプルコードです。
### 箱ひげ図にラベルを表示
import matplotlib.pyplot as plt
import numpy as np
def func_score(list_score) :
list_score = [100 if score >= 100 else score for score in list_score]
list_score = [0 if score <= 0 else score for score in list_score]
return list_score
math = np.random.normal(loc=80, scale=10, size=100)
math = func_score(math)
english = np.random.normal(loc=60, scale=20, size=100)
english = func_score(english)
fig, ax = plt.subplots()
ax.boxplot([math,english], labels=['math', 'english'])
plt.show()
コード実行後、表示されるグラフはこちらになります。
> ax.boxplot( [math,english] , labels=['math', 'english'] )
引数 labels に、ラベルとして表示したい文字列をリストで指定しています。
なお、箱ひげ図を作成する方法については、下記の記事で紹介しています。
スポンサーリンク
matplotlibで円グラフ(pie)にラベルを表示する方法
円グラフに軸ラベルを表示する方法を紹介します。
以下、サンプルコードです。
### 円グラフにラベルを表示
import matplotlib.pyplot as plt
x = [80, 50, 30, 20, 10]
labels = ['A', 'B', 'C', 'D', 'E']
fig, ax = plt.subplots()
ax.pie(x, startangle=90, counterclock=False, autopct="%.1f%%", pctdistance=0.8, labels=labels)
plt.show()
コード実行後、表示されるグラフはこちらになります。
> ax.pie(x, startangle=90, counterclock=False, autopct="%.1f%%", pctdistance=0.8, labels=labels)
引数 autopct= を指定し、データラベルを表示できます。
引数 labels= を指定し、各データの要素名を表すラベルを表示しています。
なお、円グラフを作成する方法については、下記の記事で紹介しています。
スポンサーリンク