Python 複数のグラフを並べて1枚の画像に出力する

 本記事では、下図のように複数のグラフを1枚の画像にして保存する雛形コードを載せました。グラフ配置の列数は任意の数に指定できます。
 例えば、下図は4列にした場合です。

そして、下図は3列に指定した場合の例です。

■本プログラム

import os
import math
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
plt.rcParams['font.size'] = 14 # グラフの基本フォントサイズの設定

# ファイルを読み込む
file_path = 'boston_XYdata.csv'
file_name, _ = os.path.splitext(file_path)
df = pd.read_csv(file_path)
df

# 最小二乗法による一次関数を返す関数
def least_squares_method_func(x,y):
    coefficients = np.polyfit(x, y, 1)
    return np.poly1d(coefficients)
    
# 列名を取得
columns = list(df.columns)
columns

# X軸にする列名を取得
x_names = columns[:-1]
x_names

# Y軸にする列名を取得
y_name = columns[-1]
y_name

# グラフを作成
my_col = 3
my_row = math.ceil(len(df)/my_col)
fig = plt.figure(figsize = (12, 360), tight_layout = True)

for i, x_name in enumerate(x_names, start=1):
    print(i, x_name)
    
    # プロットするX, Yデータを抽出する
    X, Y = df[x_name], df[y_name]

    # 画像を配置する場所
    plt.subplot(my_row, my_col, i)
    # 散布図
    plt.scatter(X, Y, facecolor='None', edgecolors='blue')
    
    # 近似式を計算
    myformula = least_squares_method_func(X, Y)
    # 近似線をプロット
    plt.plot(X, myformula(X), color='red', label='近似線')
    
    # 近似式をグラフ上に表示
    equation_text = f'y = {myformula.coeffs[0]:.2f}x + {myformula.coeffs[1]:.2f}'
    plt.text(0.5, 0.9, equation_text, transform=plt.gca().transAxes, color='red')
    
    plt.xlabel(x_name)
    plt.ylabel(y_name)
    plt.yscale('linear') # linear, log
    plt.ylim(0, 55)
    plt.grid()

# グラフを画像ファイルに保存する
fig.savefig(f'{file_name}_{my_col}cols.jpg', bbox_inches='tight')

以上

<広告>