'22/06/10更新:グラフの体裁のため、雛形コードを多少編集しました。
本記事では、下図のような交互作用図を作成する雛形コードを載せました。縦軸は、出力指標Yのデータ平均で,横軸と凡例は入力因子Xです。
例えば、凡例によって線の傾きが異なることがありえます。特に、交差する場合を交互作用があると言います。
ここで、上図を作成した例題データは下図です。入力因子Xは、寸法A,寸法B,材料特性Cの3つで、出力指標Yは応力です。
3つの因子Xから、2因子ずつの組み合わせを作ります。横軸と凡例に設定するためで、itertools.combinationsを使用することで、下記のようにできます
■本プログラム
import pandas as pd
DF = pd.read_csv('test_data.csv', encoding = 'cp932')
DF
import itertools
y_name = '応力'
x_name_list = ['寸法A', '寸法B', '材料特性C']
my_combination = (list(itertools.combinations(x_name_list, 2)))
my_combination
from statsmodels.graphics.factorplots import interaction_plot
import matplotlib.pyplot as plt
plt.rcParams['font.size']=18
import japanize_matplotlib
import matplotlib.cm as cm
y_min = DF[y_name].min()
y_max = DF[y_name].max()
fig = plt.figure(figsize=(22, 5), tight_layout=True)
fig_col = 3
fig_row = round(len(my_combination) / fig_col)
for j, _ in enumerate(my_combination):
x1, x2 = _
cnt = len(DF.groupby(x2).size())
color_list = []
for i in range(cnt):
color_list.append(cm.cool(i/cnt))
ax = fig.add_subplot(fig_row, fig_col, j+1)
plt.grid()
fig1 = interaction_plot(DF[x1],
DF[x2],
DF[y_name],
ms = 10,
colors = color_list,
ax = ax)
ax1 = plt.gca()
ax1.set(ylim=(y_min, y_max))
ax1.set_xlabel(x1)
ax1.set_ylabel(y_name + '_(Average)')
ax1.legend(bbox_to_anchor=(1.00, 0.9), title = x2)
if j != 0:
ax1.set_ylim(None)
ax1.grid(True)
plt.savefig(y_name + '.jpg')
以上
<広告>
リンク
リンク