当前位置: 首页 > article >正文

大数据可视化-三元图

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


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()

 


http://www.kler.cn/a/318306.html

相关文章:

  • k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
  • AndroidStudio-常用布局
  • 传奇996_19——常用函数
  • LlamaIndex
  • 穿越数据迷宫:C++哈希表的奇幻旅程
  • 信号-3-信号处理
  • 【MySQL 04】数据类型
  • linux-安全管理-文件系统安全
  • 计算机组成原理(笔记4)
  • 八大排序——万字长文带你剖析八大排序(C语言)
  • python中数据科学与机器学习框架
  • device靶机详解
  • 【C++ 基础数学 】2121. 2615相同元素的间隔之和|1760
  • 音频3A——初步了解音频3A
  • 【Python语言初识(一)】
  • [vulnhub] Hackademic.RTB1
  • 信息安全工程师(11)网络信息安全科技信息获取
  • 前端vue-作用域插槽的传值,子传父,父用obj对象接收
  • 服务设计原则介绍
  • html+css(交河故城css)
  • Python基于flask框架的智能停车场车位系统 数据可视化分析系统fyfc81
  • 【Windows 同时安装 MySQL5 和 MySQL8 - 详细图文教程】
  • Android15之源码分支qpr、dp、beta、r1含义(二百三十二)
  • 深度学习01-概述
  • JS 特殊运算符有哪些?
  • YOLOv8——测量高速公路上汽车的速度