Pythonで2つのプロットを並べて作成する方法【matplotlibのsubplot活用】
matplotlibのsubplot(row, col, index)メソッドを使うと、1つの図(figure)を行数×列数の領域に分割し、指定したインデックスの位置にそれぞれグラフを描画できます。本記事では、このメソッドを利用して、1つの図の中に2つのグラフを横並びで作成する方法を解説します。
実装の手順
numpyを使って、x座標と2種類のy座標(y1、y2)のデータポイントを作成します。
nrows=1、ncols=2、index=1を指定してsubplot()メソッドを呼び出し、現在のfigureに最初のサブプロットを追加します。plot()メソッドで、xとy1のデータを使って折れ線グラフを描画します。plt.title()、plt.xlabel()、plt.ylabel()メソッドを使って、1つ目のグラフにタイトルとX軸・Y軸のラベルを設定します。同様に、
nrows=1、ncols=2、index=2を指定してsubplot()メソッドを呼び出し、2つ目のサブプロットを追加します。plot()メソッドで、xとy2のデータを使って折れ線グラフを描画します。2つ目のグラフにも、タイトルとX軸・Y軸のラベルを設定します。
最後に
plt.show()メソッドを呼び出して、図を画面に表示します。
サンプルコード
from matplotlib import pyplot as plt
import numpy as np
xPoints = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 20])
y1Points = np.array([12, 14, 16, 18, 10, 12, 14, 16, 18, 120])
y2Points = np.array([12, 7, 6, 5, 4, 3, 2, 2, 1, 12])
plt.subplot(1, 2, 1) # 1行2列のうち、インデックス1の位置
plt.plot(xPoints, y1Points)
plt.title("My first plot!")
plt.xlabel('X-axis ')
plt.ylabel('Y-axis ')
plt.subplot(1, 2, 2) # インデックス2の位置
plt.plot(xPoints, y2Points)
plt.title("My second plot!")
plt.xlabel('X-axis ')
plt.ylabel('Y-axis ')
plt.show()
実行結果
上記のコードを実行すると、1つのウィンドウ内に左右に並んだ2つの折れ線グラフが表示されます。左側がy1のデータ、右側がy2のデータを可視化したものです。

ポイントのまとめ
subplot(1, 2, index)は「1行2列のグリッド」を作成することを意味し、第3引数のindexでどの位置にグラフを配置するかを指定します。indexは左上から1始まりで数えられるため、subplot(1, 2, 1)が左側、subplot(1, 2, 2)が右側の領域に対応します。この仕組みを応用すれば、3つ以上のグラフを縦やグリッド状に配置することも簡単に行えます。
-
PythonとTensorFlowで2つの行列を乗算する方法を解説
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために利用されています。研究用途から本番運用まで幅広く使われており、複雑な数学的演算を高速に処理できる最適化技術を備えているのが特長です。 その理由の一つは、NumPyと多次元配列を基盤としている点にあります。この多次元配列は「テンソル」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築をサポートし、高いスケーラビリティを持ち、人気のデータセットが多数付属しています。また、GPUに
-
PythonのBokehを使って複数の折れ線を可視化する方法
Bokehは、データ可視化を支援するためのPythonパッケージです。オープンソースプロジェクトとして公開されており、HTMLとJavaScriptを使用してグラフを描画します。そのため、Webベースのダッシュボードを作成する際に特に有用なライブラリとなっています。Bokehの仕組みBokehはデータソースをJSONファイルに変換します。このJSONファイルは、JavaScriptライブラリであるBokehJSへの入力として使用されます。BokehJSはTypeScriptで書かれており、最新のブラウザ上で可視化をレンダリングする役割を担っています。MatplotlibやSeabornが静的な