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

Matplotlibを使ってPythonで複数の図を横並びに描画する方法

Matplotlibで複数の図を並べて描画する手順

PythonのMatplotlibを使えば、subplot()メソッドを活用することで、複数の図を1つのウィンドウ内に横一列に並べて簡単に表示できます。ここでは、同じランダムデータを4種類のカラーマップで可視化する例を紹介します。

具体的には、以下の手順で実装します。

  • numpyを使ってランダムなデータ(5×5の行列)を作成します。
  • plt.subplot(nrows, ncols, index)で現在の図にサブプロットを追加します。今回は「nrows=1、ncols=4」のレイアウトで、index=1から順に配置していきます。
  • imshow()メソッドにcmap="Blues_r"を指定し、データを2次元ラスタ画像として表示します。
  • 同様にindex=2〜4のサブプロットを追加し、それぞれcmap="Accent_r"cmap="terrain_r"cmap="twilight_shifted_r"という異なるカラーマップで画像を表示します。
  • 最後にshow()メソッドを呼び出して、図全体を画面に表示します。

コード例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
data = np.random.rand(5, 5)
plt.subplot(1, 4, 1)
plt.imshow(data, cmap="Blues_r")
plt.subplot(1, 4, 2)
plt.imshow(data, cmap="Accent_r")
plt.subplot(1, 4, 3)
plt.imshow(data, cmap="terrain_r")
plt.subplot(1, 4, 4)
plt.imshow(data, cmap="twilight_shifted_r")
plt.show()

出力結果

Matplotlibを使ってPythonで複数の図を横並びに描画する方法

このコードを実行すると、同じデータが「Blues_r」「Accent_r」「terrain_r」「twilight_shifted_r」という4種類のカラーマップで色分けされ、1行4列のグリッド上に横並びで表示されます。カラーマップを変えるだけでデータの見え方が大きく変わるため、目的に応じた配色の選択が可視化の質を左右するポイントになります。また、plt.rcParams["figure.figsize"]で図のサイズを調整したり、plt.rcParams["figure.autolayout"] = Trueでラベルやタイトルがはみ出さないよう自動レイアウトを有効にしている点も覚えておくと便利です。

  1. Matplotlibのラベルに改行を入れる方法|Pythonサンプルコード付きで解説

    本記事では、PythonのMatplotlibを使って、グラフの軸ラベルに改行を挿入する方法を解説します。「\n」を活用することで、X軸やY軸のラベルを複数行に分けて見やすく表示できます。 実装手順 「\n」を使用して、X軸・Y軸それぞれのラベルに改行を含めたテキストを設定します。 plt.rc()メソッドで現在のrcParamsを設定し、axesグループに対してプロパティサイクルを適用します。 cyclerを使って、線の色のグループを設定します。色のリストは「r」(赤)、「g」(緑)、「b」(青)、「y」(黄)で構成されます。 Cyclerクラスは、単一の位置引数、2つの位置引数のペア、ま

  2. Python Matplotlibでカスタムカラーとカスタム領域サイズを使って4D散布図をプロットする方法

    はじめに散布図(Scatter Plot)は、2つの変数間に関係性があるかどうかを確認するために、2次元データを視覚化する際に非常に便利なグラフです。散布図では、データがX値とY値を持つ点(ドット)として表現されます。実装手順1. matplotlibのインストールまず、以下のコマンドでmatplotlibをインストールします。pip install matplotlib2. matplotlibのインポートimport matplotlib.pyplot as plttennis_stats = ((Federer, 20),(Nadal, 20),(Djokovic, 17),(Sampr