Matplotlib は Python で最も広く使われているデータ可視化ライブラリの 1 つです。
Matplotlib の人気の多くは、そのカスタマイズオプションによるもので、オブジェクトの階層構造からほぼ全ての要素を微調整することができます。
このチュートリアルでは、Matplotlib で図のサイズを変更する方法について見ていきます。
プロットの作成
まず、図に簡単なプロットを作成してみましょう。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()
ここでは、0から始まり10
で終わる正弦関数を 0.1
のステップでプロットしています。
このコードを実行すると、次のようになります。
Figureオブジェクトは明示的に作成されていない場合、デフォルトで作成され、見える要素と見えない要素をすべて含んでいます。
Figure のサイズを変更すると、観察可能な要素のサイズも変更されます。
それでは、Figure のサイズを変更する方法を見てみましょう。
Matplotlib で図形のサイズを変更する
figsize 引数を設定します。
まず最初に、図のサイズを変更する最も簡単な方法は、 figsize
引数を使用することです。
この引数は、Pyplotの初期化時に使用するか、既存の Figure
オブジェクトに対して使用することができます。
まずは初期化時に変更してみましょう。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.figure(figsize=(3, 3))
plt.plot(x, y)
plt.show()
ここでは、デフォルトで作成された Figure
インスタンスにアクセスして、 figsize
という引数を渡しています。
サイズはピクセルではなく、インチで定義されていることに注意してください。
この場合、3インチ×3インチの大きさの図形が生成されます。
Matplotlib/PyPlot は現在、メートル法のサイズをサポートしていませんが、2つのサイズを変換するヘルパー関数を書くのは簡単です。
def cm_to_inch(value):
return value/2.54
そして、このようにプロットの大きさを調整します。
plt.figure(figsize=(cm_to_inch(15),cm_to_inch(10)))
これは 15cm x 10cm の大きさのプロットを作成します。
あるいは、プロットのために Figure
オブジェクトを作成するのであれば、そのときにサイズを指定することもできます。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)
fig = plt.figure(figsize=(8, 6))
# Adds subplot on position 1
ax = fig.add_subplot(121)
# Adds subplot on position 2
ax2 = fig.add_subplot(122)
ax.plot(x, y)
ax2.plot(x, z)
plt.show()
ここでは、figure()
関数の戻り値を明示的に Figure
オブジェクトに代入しています。
そして、このFigureに軸を追加して複数のサブプロットを作成し、それらにプロットすることができます。
ここでは add_subplot()
関数を使いましたが、この関数には一連の数値が入力できます。
最初の数値は、図に追加したい行の数を、2番目の数値は追加したい列の数を、3番目の数値は追加したいプロットの番号を指定します。
つまり、add_subplots()
関数に 111
を渡すと、図に新しいサブプロットが1つ追加されることになります。
一方、もし 221
という数字を使った場合、結果として得られるプロットは 2 列 2 行の 4 軸となり、あなたが形成するサブプロットは 1 番目の位置になります。
このコードの結果は
Matplotlib で図の高さと幅を設定する
引数 figsize
の代わりに、図の高さと幅を設定することもできます。
これらは、 figheight
と figwidth
を引数に持つ set()
関数で行うか、 set_figheight()
と set_figwidth()
関数で行うことができます。
前者は複数の引数に対して1行で記述することができ、後者はより読みやすいコードを提供します。
ここでは、後者を紹介します。
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y = np.sin(x)
z = np.cos(x)
fig = plt.figure()
fig.set_figheight(5)
fig.set_figwidth(10)
# Adds subplot on position 1
ax = fig.add_subplot(121)
# Adds subplot on position 2
ax2 = fig.add_subplot(122)
ax.plot(x, y)
ax2.plot(x, z)
plt.show()
このコードの結果は
最後に、set_size_inches()
関数も同様に使用することができます。
fig = plt.figure()
fig.set_size_inches(10, 5)
# Adds subplot on position 1
ax = fig.add_subplot(121)
# Adds subplot on position 2
ax2 = fig.add_subplot(122)
ax.plot(x, y)
ax2.plot(x, z)
plt.show()
そして、これは figsize
引数を設定したり、2つの関数を使用するのと同じように実行されます。
結論
このチュートリアルでは、Matplotlib で図の大きさを変更するいくつかの方法について説明しました。
もしあなたがデータの可視化に興味があり、何から始めたらいいかわからないなら、私たちの本「Pythonでのデータの可視化」を是非ご覧ください。
もしあなたがデータ可視化に興味があり、何から始めたらいいかわからないなら、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です。
データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。