大数据可视化-三元图

news/2024/9/25 10:08:46/

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


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.ppmy.cn/news/1530243.html

相关文章

Parallels Desktop 20(Mac虚拟机) v20.0.0 for Mac 最新破解版(支持M系列)

Parallels Desktop 20 for Mac 正式发布,完全支持 macOS Sequoia 和 Windows 11 24H2,并且在企业版中引入了全新的管理门户。 据介绍,新版本针对 Windows、macOS 和 Linux 虚拟机进行了大量更新,最大的亮点是全新推出的 Parallels…

K8S容器实例Pod安装curl-vim-telnet工具

在没有域名的情况下,有时候需要调试接口等需要此工具 安装curl、telnet、vim等 直接使用 apk add curlapk add vimapk add tennet

5个月的编程记录

不知不觉间,我已经在计算机这条道路上走过了五个月。从五个月前第一次翻开《C Primer Plus》开始,我便对编程产生了浓厚的兴趣。这门学科与我高中所学的死板知识截然不同,每个问题都有千变万化的解法,让我感到无比新鲜。 几天后&a…

通过pyenv local 3.6.1 这里设置了当前目录的python版本,通过pycharm基于这个版本创建一个虚拟环境

要在 PyCharm 中基于你通过 pyenv local 设置的 Python 版本创建虚拟环境,可以按照以下步骤进行操作: 步骤 1: 获取当前使用的 Python 路径 通过 pyenv 查找当前项目下的 Python 解释器路径,使用以下命令: pyenv which python …

LeetCode从入门到超凡(二)递归与分治算法

引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的LeetCode学习总结文档;在算法设计中,递归和分治算法是两种非常重要的思想和方法。它们不仅在解决复杂问题时表…

测试面试题:接口测试与功能测试相比较的优点有哪些?

一、测试效率高 接口测试可以在功能界面尚未开发完成时就进行,能够更早地发现问题,为后续的开发工作争取更多时间,从而加快整个项目的进度。 接口测试通常可以通过自动化的方式进行,一旦建立好测试框架和脚本,可以快速…

【图论】最短路应用

1135. 新年好 题目 提交记录 讨论 题解 视频讲解 MarkDown视图Copy 重庆城里有 nn 个车站,mm 条 双向 公路连接其中的某些车站。 每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的…

14 vue3之内置组件trastion全系列

前置知识 Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡: 条件渲染 (使用 v-if)条件展示 (使用 v-show)动态组件组件根节点 自定义 transition 过度效果,你需要对transition组件的name属性自定义。…