fig = make_subplots(rows=1, cols=2,
subplot_titles=('エイジ硬化効果:焼鈍温度とAl含有量依存性<br>(Chen et al. 2012より模式化)',
'使用温度と硬さの変化<br>(プロセス・組成比較)'))
data_ah = {
'x=0 (TiN)': ([25,400,600,800,1000,1100], [22.8,21,17,13,8,6], '#888888', 'dash'),
'x=0.40 (fcc)': ([25,400,600,700,800,900,1000,1100], [26,27,30,31,30,25,17,11], '#1f77b4', 'solid'),
'x=0.55 (fcc)': ([25,400,600,700,800,900,1000,1100], [30,31,33,33.5,30,24,16,10], '#2ca02c', 'solid'),
'x=0.62 (fcc)': ([25,400,600,700,800,900,1000,1100], [31.3,32,34,33,30,23,15,9], '#d62728', 'solid'),
'x=0.67 (fcc/hcp)': ([25,400,700,800,900,1000], [27.2,28,31,29,24,16], '#ff7f0e', 'solid'),
}
for name, (T, H, c, dash) in data_ah.items():
fig.add_trace(go.Scatter(x=T, y=H, mode='lines+markers', name=name,
line=dict(color=c, width=2, dash=dash),
marker=dict(size=7)), row=1, col=1)
fig.add_vrect(x0=650, x1=900, fillcolor='red', opacity=0.08,
line_width=0, row=1, col=1)
fig.add_annotation(x=775, y=37, text='スピノーダル<br>分解温度域',
showarrow=False, font=dict(color='red', size=9), row=1, col=1)
fig.add_hline(y=25, line=dict(color='gray', dash='dot', width=1),
annotation_text='TiN出発値', annotation_font=dict(size=9), row=1, col=1)
T_field = [25, 200, 400, 600, 800, 1000]
inservice = {
'TiN': ([25,22,16,10,7,5], 'black', 'dash'),
'Ti₀.₆Al₀.₄N (PVD)': ([28,29,31,33,31,22], 'blue', 'solid'),
'Ti₀.₄Al₀.₆N (PVD, 最適)': ([31,32,33,35,32,20], 'red', 'solid'),
'Ti₀.₁Al₀.₉N (LPCVD)': ([32,33,34,36,34,28], 'green', 'solid'),
}
for name, (H, c, dash) in inservice.items():
fig.add_trace(go.Scatter(x=T_field, y=H, mode='lines+markers', name=name,
line=dict(color=c, width=2, dash=dash),
marker=dict(size=8)), row=1, col=2)
fig.add_annotation(x=800, y=36, text='エイジ硬化<br>ピーク', showarrow=True,
ax=-60, ay=-30, arrowhead=2, font=dict(color='red', size=9),
xref='x2', yref='y2')
fig.update_xaxes(title_text='焼鈍温度 [°C]', range=[0, 1100], row=1, col=1)
fig.update_yaxes(title_text='硬さ [GPa]', range=[5, 40], row=1, col=1)
fig.update_xaxes(title_text='使用温度(焼鈍温度)[°C]', row=1, col=2)
fig.update_yaxes(title_text='硬さ [GPa]', row=1, col=2)
fig.update_layout(height=480, legend=dict(x=1.02), margin=dict(t=80))
fig.show()