本記事では、下図のように複数のグラフを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_names = columns[:-1]
x_names
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 = 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')
plt.ylim(0, 55)
plt.grid()
fig.savefig(f'{file_name}_{my_col}cols.jpg', bbox_inches='tight')
以上
<広告>
リンク
リンク
リンク