matplotlib ライブラリ

【matplotlib】ラベルを表示する方法【フォントサイズ変更、位置変更など】

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のpyplotとaxの違い

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関数については、下記の記事で紹介しています。

enumerate関数の使い方

散布図を作成する方法については、下記の記事で紹介しています。

matplotlibで散布図を作成する方法

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で棒グラフを作成する方法

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で箱ひげ図を作成する方法

スポンサーリンク

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= を指定し、各データの要素名を表すラベルを表示しています。

なお、円グラフを作成する方法については、下記の記事で紹介しています。

matplotlibで円グラフを作成する方法

スポンサーリンク

-matplotlib, ライブラリ
-,