本記事では、下図のように複数のグラフを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')
以上
<広告>
リンク
リンク
リンク