Matplotlibでフォントサイズを変更する

Matplotlib は Python で最も広く使われているデータ可視化ライブラリの 1 つです。

Matplotlib の人気の多くは、そのカスタマイズオプションによるもので、オブジェクトの階層構造からほぼすべての要素を微調整することができます。

このチュートリアルでは、Matplotlib のフォントサイズを変更する方法について見ていきます。

Matplotlib のフォントサイズを変更する

Matplotlib でフォントのサイズを変更するには、いくつかの方法があります。

fontsize` 引数を設定したり、Matplotlib が一般的にどのようにフォントを扱うかを変更したり、あるいは図のサイズを変更したりすることができます。

まず、フォントサイズを変更するための簡単なプロットを作ってみましょう。

import matplotlib.pyplot as plt
import numpy as np


fig, ax = plt.subplots(figsize=(12, 6))


x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)


ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
ax.set_title('Sine and cosine waves')
ax.set_xlabel('Time')
ax.set_ylabel('Intensity')
leg = ax.legend()


plt.show()


fontsizeを使用してフォントサイズを変更する。

最もシンプルな方法を試してみましょう。

タイトル、ラベル、その他テキストを扱うすべての関数は、fontsize` という引数を受け取ります。

先ほどのコードをもう一度見直して、これらの要素に fontsize を指定してみましょう。

import matplotlib.pyplot as plt
import numpy as np


fig, ax = plt.subplots(figsize=(12, 6))


x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)


ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
ax.set_title('Sine and cosine waves', fontsize=20)
ax.set_xlabel('Time', fontsize=16)
ax.set_ylabel('Intensity', fontsize=16)
leg = ax.legend()


plt.show()


ここでは、タイトルと、時間と強度のラベルに fontsize を設定しました。

このコードを実行すると、次のようになります。

prop` 引数を追加してフォントサイズを設定すれば、凡例のフォントサイズを変更することもできます。

leg = ax.legend(prop={"size":16})


これはフォントサイズを変更します。

この場合、凡例は左下に移動し、右上の要素に重ならないようにします。

しかし、このようにフォントサイズを個別に設定することもできますが、テキスト要素が多く、サイズを統一したい場合、この方法は繰り返しになります。

そのような場合は、グローバルにフォントサイズを設定する方法があります。

グローバルに文字サイズを変更する

グローバルにフォントサイズを設定するには、2つの方法があります。

まず、font_size パラメータに新しいサイズを設定します。

このパラメータは rcParams['font.size'] から取得することができます。

直接変更するのも一つの方法です。

import matplotlib.pyplot as plt
import numpy as np


fig, ax = plt.subplots(figsize=(12, 6))


x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)


plt.rcParams['font.size'] = '16'


ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
plt.xlabel('Time')
plt.ylabel('Intensity')
fig.suptitle('Sine and cosine waves')
leg = ax.legend()


plt.show()


これらは plot() 関数を呼び出す前に設定する必要があります。

なぜなら、後からこれらを適用しようとすると、何も変化が起きないからです。

この方法では、font kwargs オブジェクトによってフォントとして指定されているものすべてを変更することになります。

しかし、このコードを実行すると、x や y の目盛り、x や y のラベルの大きさが変わっていないことは明らかです。

実行している Matplotlib のバージョンによっては、rc パラメータでこれらを変更することができません。

それぞれ axes.labelsizextick.labelsize/ytick.labelsize を使用することになります。

もし、これらを設定してもラベルのサイズが変わらない場合は、 set() 関数に fontsize を渡すか、 set_fontsize() 関数を使用することができます。

import matplotlib.pyplot as plt
import numpy as np


fig, ax = plt.subplots(figsize=(12, 6))


x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)


# Set general font size
plt.rcParams['font.size'] = '16'


# Set tick font size
for label in (ax.get_xticklabels() + ax.get_yticklabels()):
    label.set_fontsize(16)

ax.plot(y, color='blue', label='Sine wave')
ax.plot(z, color='black', label='Cosine wave')
plt.xlabel('Time', fontsize=16)
plt.ylabel('Intensity', fontsize=16)


fig.suptitle('Sine and cosine waves')
leg = ax.legend()


plt.show()


この結果

結論

このチュートリアルでは、Matplotlib でフォントの大きさを変更するいくつかの方法について説明しました。

もしあなたがデータ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonでのデータ可視化に関する書籍の束をチェックしてみてください。

Pythonによるデータ可視化

期間限定割引。

30日間返金保証付き

初級から上級まで

定期的に無料で更新(最新更新は2021年4月)

ボーナスリソースやガイドを更新

Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使用して、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリの上級作業の強力な基盤を構築できるように設計された書籍です。

本書は、Pythonの基本的な知識を持つ方を対象としています。


PandasとMatplotlibについて知っておく必要
があることすべてを教えてくれる、詳細なガイドです。

Pythonによるデータ可視化」は、Pythonの初級~中級開発者向けの書籍で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornなどのコアなプロットライブラリを取り上げ、Altairなどの宣言型ライブラリや実験的ライブラリを活用する方法について案内しています。

具体的には、11章にわたって、9つのPythonライブラリを取り上げています。

Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。

データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。

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