大数据可视化-三元图

三元图是一种用于表示三种变量之间关系的可视化工具,常用于化学、材料科学和地质学等领域。它的特点是将三个变量的比例关系在一个等边三角形中展示,使得每个点的位置代表三个变量的相对比例。


1. 结构

  1. 三个角分别表示三个变量的最大值(通常为100%)。
  2. 每个点的坐标反映了这三个变量的比例关系。

2. 应用

  1. 化学配比:显示不同成分在合成反应中的比例。
  2. 材料科学:分析合金成分对材料性能的影响。
  3. 地质学:表示土壤成分的比例,如砂、淤泥和粘土。

3. 优点

  1. 直观展示三者间的相互关系。
  2. 便于识别特定组合的最佳方案。

4. 限制

  1. 适用于只有三种变量的情况,复杂性增加时可读性下降。

三元图是深入了解变量间关系的有效工具,能够帮助研究人员和决策者做出更好的分析和选择。

5.代码

#忽略警告
import warnings
warnings.filterwarnings('ignore')
#导入绘图库
import matplotlib.pyplot as plt
from mpltern.datasets import get_dirichlet_pdfs
import pandas as pd

#定义alpha参数
alpha = [2,4,8]
#获取Dirichlet分布的概率密度pdf数据
t ,l, r, v = get_dirichlet_pdfs(n= 61,alpha=alpha)
df = pd.DataFrame({'x1':t,'x2':l,'x3':r,'pdf':v})

df

#绘制三元图
fig = plt.figure(figsize=(8,6),dpi=1200)
ax = fig.add_subplot(1,1,1, projection='ternary')
#设置颜色映射和阴影
camp = 'Blues'
shading = 'gouraud'
#绘制三元图的颜色图
cs = ax.tricontourf(t,l,r,v,cmap=camp,shading=shading,rasterized=True)
#添加等高线
ax.tricontour(t,l,r,v,colors='k',linewidths=0.5)
ax.set_tlabel('$x_1$', fontsize=12)
ax.set_llabel('$x_2$', fontsize=12)
ax.set_rlabel('$x_3$', fontsize=12)
ax.set_title("${\\mathbf{\\alpha}}$="+ str(alpha), fontsize=12)
cax = ax.inset_axes([1.05, 0.1, 0.05, 0.9], transform=ax.transAxes)
colorbar = fig.colorbar(cs, cax=cax)
colorbar.set_label('PDF', rotation=270,va='baseline')
plt.savefig('三元图.pdf',format='pdf',bbox_inches='tight')
plt.show()

 

#不同条件下的三元图
fig = plt.figure(figsize=(10.8,8.8),dpi=1200)
fig.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1, wspace=0.5, hspace=0.5)
#定义alpha参数
alphas = [(1.5,1.5,1.5),(5.0,5.0,5.0),(1.0,2.0,2.0),(2.0,4.0,8.0)]

#绘制四个不同的三元图
for i,alpha in enumerate(alphas):
    ax = fig.add_subplot(2,2,i+1, projection='ternary')
    #获取Dirichlet分布的概率密度pdf数据
    t ,l, r, v = get_dirichlet_pdfs(n= 61,alpha=alpha)
    #设置颜色映射和阴影
    camp = 'Blues'
    shading = 'gouraud'
    
    #绘制三元图的颜色图
    cs = ax.tricontourf(t,l,r,v,cmap=camp,shading=shading,rasterized=True)
    #添加等高线
    ax.tricontour(t,l,r,v,colors='k',linewidths=0.5)
    #设置坐标轴标签
    ax.set_tlabel('$x_1$', fontsize=12)
    ax.set_llabel('$x_2$', fontsize=12)
    ax.set_rlabel('$x_3$', fontsize=12)
    #设置标题
    ax.set_title("${\\mathbf{\\alpha}}$="+ str(alpha), fontsize=12)
    #添加颜色图的颜色条
    cax = ax.inset_axes([1.05, 0.1, 0.05, 0.9], transform=ax.transAxes)
    colorbar = fig.colorbar(cs, cax=cax)
    colorbar.set_label('PDF', rotation=270,va='baseline')
plt.savefig('不同条件下的三元图.pdf',format='pdf',bbox_inches='tight')
plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡_R-Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值