Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでグラフを描く方法!matplotlibによるグラフ作成の基本と応用テクニック

Pythonでは、matplotlibライブラリを使用することで、簡単にグラフを作成できます。matplotlibには多数のパッケージと関数が用意されており、さまざまな種類のグラフやプロットを生成できます。また、使い方も非常にシンプルです。NumPyなどのPython組み込み関数と組み合わせることで、データ可視化の目的を効率的に達成できます。

この記事では、matplotlibで描画できる代表的なグラフの種類とその実装方法を、サンプルコード付きで紹介します。

シンプルなグラフの描き方

まずは基本的なグラフの描画方法です。ここでは数学関数を使ってX座標とY座標を生成し、その関数をmatplotlibでプロットします。ラベルやタイトルも以下のように簡単に設定できます。例として、三角関数の一つであるtan(タンジェント)の波形を描いてみましょう。

コード例

from matplotlib import pyplot as plt
import numpy as np
import math # 円周率piの定義に必要
x = np.arange(0, math.pi*2, 0.05)
y = np.tan(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("Tan value")
plt.title('Tan wave')
plt.show()

実行結果

上記のコードを実行すると、次のような結果が得られます。

Pythonでグラフを描く方法!matplotlibによるグラフ作成の基本と応用テクニック

複数のグラフを1つのキャンバスに表示する

複数の軸(axes)を作成してプログラム内で使用することで、2つ以上のプロットを1つのキャンバス上に配置できます。メインのグラフの中に小さなグラフを挿入するなど、柔軟なレイアウトが可能です。

コード例

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # メインの軸
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # 挿入する軸
axes3 = fig.add_axes([0.2, 0.3, 0.2, 0.3]) # 挿入する軸
axes1.plot(x, np.sin(x), 'b')
axes2.plot(x,np.cos(x),'r')
axes3.plot(x,np.tan(x),'g')
axes1.set_title('sine')
axes2.set_title("cosine")
axes3.set_title("tangent")
plt.show()

実行結果

上記のコードを実行すると、次のような結果が得られます。

Pythonでグラフを描く方法!matplotlibによるグラフ作成の基本と応用テクニック

サブプロットのグリッドレイアウト

異なるグラフをそれぞれサブプロットとして含むグリッドを作成することもできます。これにはsubplot2grid関数を使用します。すべてのサブプロットがグリッド内に収まるように、軸の位置を慎重に選ぶ必要があります。試行錯誤が必要になる場合もありますので、colspan(列の結合数)やrowspan(行の結合数)を調整しながらレイアウトを整えましょう。

コード例

import matplotlib.pyplot as plt
a1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
a2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
a3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
import numpy as np
x = np.arange(1,10)
a2.plot(x, x*x,'r')
a2.set_title('square')
a1.plot(x, np.exp(x),'b')
a1.set_title('exp')
a3.plot(x, np.log(x),'g')
a3.set_title('log')
plt.tight_layout()
plt.show()

実行結果

上記のコードを実行すると、次のような結果が得られます。

Pythonでグラフを描く方法!matplotlibによるグラフ作成の基本と応用テクニック

等高線プロット(コンタープロット)

等高線プロット(Level Plotとも呼ばれます)は、三次元の曲面を二次元平面上に表現する手法です。2つの説明変数X・Yを軸にとり、応答変数Zを等高線として表示します。matplotlibには、等高線を描くcontour()関数と、塗りつぶし等高線を描くcontourf()関数が用意されています。

コード例

import numpy as np
import matplotlib.pyplot as plt

xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)

X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)

fig,ax=plt.subplots(1,1)
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # グラフにカラーバーを追加
ax.set_title('Filled Contours Plot')

#ax.set_xlabel('x (cm)')
ax.set_ylabel('y (cm)')
plt.show()

実行結果

上記のコードを実行すると、次のような結果が得られます。

Pythonでグラフを描く方法!matplotlibによるグラフ作成の基本と応用テクニック


  1. 【初心者向け】PythonのPlotlyで地理的プロット(コロプレス図)を作成する方法

    PlotlyとはPythonには地理データやグラフデータを扱うためのさまざまなライブラリが用意されています。その中でもPlotlyは、地理的なグラフを描くために広く利用されている無料のオープンソースライブラリです。折れ線グラフ、横棒グラフ、縦棒グラフ、ダッシュボード、散布図、バブルチャート、円グラフなど、多彩なグラフを簡単に作成できます。特に地理データの可視化では「コロプレス図(choropleth map)」と呼ばれる塗り分け地図を描画でき、地域ごとの数値データを色の濃淡で直感的に表現できるのが大きな魅力です。ライブラリのインポートと初期設定まずは必要なライブラリをインポートし、Jupyte

  2. PythonのSunPyライブラリで太陽画像をプロットする方法

    Pythonでは、SunPyというパッケージを使って太陽画像を作成・表示することができます。SunPyには、各地の太陽観測所や太陽研究機関が提供する陽子フラックスや電子フラックスなど、さまざまな太陽観測データが含まれています。 SunPyは、以下のコマンドで簡単にインストールできます。 pip install sunpy AIA画像とは ここではサンプルとしてAIA画像をプロットします。AIA(Atmospheric Imaging Assembly:大気圏撮像装置)は、NASAの太陽観測衛星SDO(Solar Dynamics Observatory)に搭載された観測機器の一つで、太陽大気を