绘图提高篇 | Python-R-三相元图(ternary plots)绘制

这期推文,我们将介绍如何使用Python和R制作三相元图( ternary plots),涉及的知识点如下:

  • Python-ternary包绘制三相元图

  • R-ggtern包绘制三相元图

  • 所有完整代码都已整理之我们的线上课程,有需要的同学+v yidianshuyulove 咨询

Python-ternary包绘制三相元图

在查阅“使用Python绘制三相元图”时,我们查阅到了ternary包,该包可实现使用Python绘制三相元图的要求,官网为:https://github.com/marcharper/python-ternary,我们绘制几副官网的图例,其他样例,大家可以参考官网:

样例一:Simplex Boundary and Gridlines

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
## Boundary and Gridlines
fig,ax = plt.subplots()
scale = 30
figure, tax = ternary.figure(scale=scale,ax=ax)
figure.set_size_inches(6, 6)# Draw Boundary and Gridlines
tax.boundary(linewidth=1.5)
tax.gridlines(color="black", multiple=6)
tax.gridlines(color="blue", multiple=2, linewidth=0.5)# Set Axis labels and Title
fontsize = 12
tax.set_title("Simplex Boundary and Gridlines\n", fontsize=fontsize)
tax.left_axis_label("Left label $\\alpha^2$", fontsize=fontsize, offset=0.14)
tax.right_axis_label("Right label $\\beta^2$", fontsize=fontsize, offset=0.14)
tax.bottom_axis_label("Bottom label $\\Gamma - \\Omega$", fontsize=fontsize, offset=0.14)# Set ticks
tax.ticks(axis='lbr', linewidth=1, multiple=5, offset=0.03)# Remove default Matplotlib Axes
tax.clear_matplotlib_ticks()
tax.get_axes().axis('off')ax.text(.83,-.06,'\nVisualization by DataCharm',transform = ax.transAxes,ha='center', va='center',fontsize = 8,color='black')
ternary.plt.show()

可视化结果如下:

样例二:RGBA colors

import math
def color_point(x, y, z, scale):w = 255x_color = x * w / float(scale)y_color = y * w / float(scale)z_color = z * w / float(scale)r = math.fabs(w - y_color) / wg = math.fabs(w - x_color) / wb = math.fabs(w - z_color) / wreturn (r, g, b, 1.)def generate_heatmap_data(scale=5):from ternary.helpers import simplex_iteratord = dict()for (i, j, k) in simplex_iterator(scale):d[(i, j, k)] = color_point(i, j, k, scale)return dfig,ax = plt.subplots()
scale = 80
data = generate_heatmap_data(scale)
figure, tax = ternary.figure(scale=scale,ax=ax)
figure.set_size_inches(6, 6)
tax.heatmap(data, style="hexagonal", use_rgba=True, colorbar=False)
# Remove default Matplotlib Axes
tax.clear_matplotlib_ticks()
tax.get_axes().axis('off')
tax.boundary()
tax.set_title("RGBA Heatmap")
ax.text(.83,.06,'\nVisualization by DataCharm',transform = ax.transAxes,ha='center', va='center',fontsize = 8,color='black')
plt.show()

可视化结果如下:

除了以上两个较常用的样例,官网还提供如下可视化样例(更多样例,大家可参考官网):

Heatmaps1

Heatmaps2

Heatmaps3

R-ggtern包绘制三相元图

在介绍了Python 绘制三相元图之后,我们再介绍使用R绘制,由于ggplot2的强大功能,我们还是选择ggplot2体系的第三方包进行绘制,而ggtern包则是我们的首要选择。官网:http://www.ggtern.com/。我们虚构数据进行ggtern包的基本探索,具体如下:

数据构建如下:

test_data = data.frame(x = runif(100),y = runif(100),z = runif(100))
head(test_data)

预览如下:

point charts:

library(tidyverse)
library(ggtern)
library(hrbrthemes)
library(ggtext)test_plot_pir <- ggtern(data = test_data,aes(x, y, z))+geom_point(size=2.5)+theme_rgbw(base_family = "Roboto Condensed") +labs(x="",y="",title = "Example Density/Contour Plot: <span style='color:#D20F26'>GGtern Test</span>",subtitle = "processed map charts with <span style='color:#1A73E8'>ggtern()</span>",caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +guides(color = "none", fill = "none", alpha = "none")+theme(plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",size = 20, margin = margin(t = 1, b = 12)),plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),plot.caption = element_markdown(face = 'bold',size = 12),)

可视化结果如下:

优化处理:

test_plot <- ggtern(data = test_data,aes(x, y, z),size=2)+stat_density_tern(geom = 'polygon',n = 300,aes(fill  = ..level..,alpha = ..level..))+geom_point(size=2.5)+theme_rgbw(base_family = "Roboto Condensed") +labs(x="",y="",title = "Example Density/Contour Plot: <span style='color:#D20F26'>GGtern Test</span>",subtitle = "processed map charts with <span style='color:#1A73E8'>ggtern()</span>",caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +scale_fill_gradient(low = "blue",high = "red")  +#去除映射属性的图例guides(color = "none", fill = "none", alpha = "none")+ theme(plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",size = 20, margin = margin(t = 1, b = 12)),plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),plot.caption = element_markdown(face = 'bold',size = 12),)

可视化结果如下:

除此之外,官网还提供如下样例:

PPS 3-State Model

using geom_label_viewport

Ternary Tribin

Demonstration of Raster Annotation

当然,还有一个交互式的demo可以更好的体验ggtern包的强大,界面如下:

总结

本期推文我们汇总了Python和R绘制了三相元图,整体难度较低,小伙伴们可行自己参考官网进行探索。接下来,我们还会进行优质数据的免费分享哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496264.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百科词条创作的意义是什么?有什么作用?

如今&#xff0c;作为一种重要的知识传播媒介&#xff0c;百科词条的创作起着重要的作用 1、百科词条创作的意义和作用是什么&#xff1f; 1.知识的收集与整理 2.凝聚智慧的结晶 3.促进学术交流与合作与合作 二、创建百科词条的重要性 1.丰富知识资源 2.提高信息准确性 …

考研数据结构算法机试训练1

中南大学上机压轴题 测试数据&#xff1a; 3 500 0.6 100 0.8 200 0.7 100 输出 390首先要对输入的折扣进行排序&#xff0c;优先使用比率低的z进行支付。 然后用lowcost记录目前多少钱是打过折的。T-lowcost就是剩余没打折的。 每次循环用上一个人的折扣额度。若所有人折扣额…

Docker 常用操作命令备忘

Docker 一旦设置好了环境&#xff0c;日常就只要使用简单命令就可以运行和停止。 于是&#xff0c;我每次用的时候&#xff0c;都想不起来一些关键性的命令到底怎么用&#xff0c;特此记录。 一、镜像管理 从公有仓库拉取镜像 &#xff08;对于使用苹果电脑 M1/M2/M3 芯片的 …

Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息

1.安装CPU温度检测软件sensors apt install lm-sensors -y 传感器探测&#xff0c;命令&#xff1a;sensors-detect 全部选择yes即可&#xff0c;可能其中一个地方提示 ENTER&#xff0c;按 回车键 即可 2.查看一下温度信息 sensors 3.修改 /usr/share/perl5/PVE/API2/Nod…

雾锁王国Enshrouded服务器CPU内存配置怎么选择?

雾锁王国/Enshrouded服务器CPU内存配置如何选择&#xff1f;阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置&#xff0c;支持4人玩家畅玩&#xff0c;自带10M公网带宽&#xff0c;1个月90元&#xff0c;3个月271元&#xff0c;幻兽帕鲁服务器申请页面 https://t.aliyun.com…

react-JSX基本使用

1.目标 能够知道什么是JSX 能够使用JSX创建React元素 能够在JSX中使用JS表达式 能够使用JSX的条件渲染和列表渲染 能够给JSX添加样式 2.目录 JSX的基本使用 JSX中使用JS表达式 JSX的条件渲染 JSX的列表渲染 JSX的样式处理 3.JSX的基本使用 3.1 createElement()的问题 A. …

PostgreSQL中int类型达到上限的一些处理方案

使用int类型作为表的主键在pg中是很常见的情况&#xff0c;但是pg中int类型的范围在-2147483648到2147483647&#xff0c;最大只有21亿&#xff0c;这个在一些大表中很容易就会达到上限。一旦达到上限&#xff0c;那么表中便没办法在插入数据了&#xff0c;这个将会是很严重的问…

影像仪激光扫描功能,无缝连接2D/3D混合测量

在现代工业生产领域&#xff0c;影像仪用于质量控制和产品检测&#xff0c;是一个不可或缺的工具。它通过高精度的成像和图像处理技术&#xff0c;可以及时发现产品的缺陷和异常&#xff0c;以保证产品质量的稳定性和一致性。 影像仪的重要性及其面临的挑战 在工业生产方面&a…

论文阅读:SOLOv2: Dynamic, Faster and Stronger

目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址&#xff1a;[2003.10152] SOLOv2: Dynamic and Fast Instance Segmentation (arxiv.org) 代码地址&#xff1a;GitHub - WXinlong/SOLO: SOLO and SOLOv2 for instance segmentation, ECCV 2020 & NeurIPS…

在两台CentOS 7服务器上部署MinIO集群---准确

环境说明&#xff1a; 2台Centos7服务器 IP地址分别为172.16.1.9和172.16.1.10 1. 创建minio用户和目录 在两台服务器上执行以下命令&#xff1a; sudo useradd -m -d /app/minio minio sudo mkdir -p /app/minioData sudo mkdir -p /app/minio/logs sudo chown -R mini…

【AIGC】OpenAI推出王炸级模型sora,颠覆AI视频行业

文章目录 强烈推荐前言什么是OpenAI Sora&#xff1f;工作原理&#xff1a;算法原理&#xff1a;应用场景展望与其他视频生成模型相比有哪些优势和不足&#xff1f;优点缺点 总结强烈推荐专栏集锦写在最后 强烈推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易…

2024全新版EasyRecovery14数据恢复软件功能详细分析

一、功能概述 EasyRecovery14是一款功能全面的数据恢复软件&#xff0c;它提供了从各种存储设备&#xff08;如硬盘、U盘、SD卡、数码相机等&#xff09;中恢复丢失或删除数据的能力。该软件支持多种恢复模式&#xff0c;包括快速恢复、深度扫描、格式化恢复等&#xff0c;以满…