pythonic生物人 2025-04-25 12:01 浙江
三元相图(Ternary Phase Diagram)是一种简明直观的图形工具,用于表征三个组分体系在特定条件(如温度或压力)下的相平衡关系。其以等边三角形为框架,各顶点分别代表一种纯组分(如A、B、C),三角形内部的点则对应三组分的各种比例组合。
简单三元相图
# 核心代码
for phase, color in zip(['SolidSolution', 'Precipitate', 'Mixed'],
custom_colors1):
mask = ternary_data['Phase'] == phase
ax.scatter(
ternary_data[mask]['Al'] / 100, # 归一化到0-1
ternary_data[mask]['Cu'] / 100,
ternary_data[mask]['Mg'] / 100,
c=color, # 点颜色
edgecolors='black', # 点边框
linewidths=1.0, # 点边框宽度
s=ternary_data[mask]['MeltingPoint'] / 500 * 80, # 点大小
marker='o', # 圆形点
alpha=0.9, # 透明度
label=phase_mapping[phase] # 直接使用中文标签
)
注释三元相图(添加文本)
# 核心代码
scatter = ax.scatter(ternary_data['Al'] / 60,
ternary_data['Cu'] / 60,
ternary_data['Mg'] / 60,
c=phase_colors,
edgecolors='black',
linewidths=0.6,
s=ternary_data['MeltingPoint'] / 10,
alpha=0.9)
# 2 个性化
## 设置轴标签和刻度
ax.set_tlabel('Al (%)',
fontsize=12,
fontweight='bold',
position=(0.9, 0.1, 0.1))
ax.set_llabel('Cu (%)',
fontsize=12,
fontweight='bold',
position=(0.1, 0.9, 0.1))
ax.set_rlabel('Mg (%)',
fontsize=12,
fontweight='bold',
position=(0.1, 0.1, 0.9))
三元相图(可交互)
# 核心代码
# 创建三元相图
fig = px.scatter_ternary(
ternary_data,
a="Al", # 铝含量列
b="Cu", # 铜含量列
c="Mg", # 镁含量列
color="Phase", # 根据相类型着色
size="MeltingPoint", # 根据熔点调整点大小
size_max=15, # 调整最大点大小
color_discrete_map={
"SolidSolution": '#FF6B6B',
"Precipitate": '#000000',
"Mixed": '#45B7D1'
},
title="可交互三元相图")