当前位置:首页 > 后端开发 > 正文内容

制作三元图、色彩空间图:R言语代码

邻居的猫1个月前 (12-09)后端开发836

  本文介绍根据R语言中的Ternary包,制作三元图(Ternary Plot)的详细办法;其间,咱们就以RGB三色分布图为例来详细介绍。

  三元图能够从三个不同的视点反映数据的特征,因而在许多范畴都得以广泛应用;如下图所示,便是一个最简略的三元图。其间,根据R语言中的Ternary包,咱们能够十分便利地制作三元图;本文就对其详细制作办法加以介绍。

image

  首要,因为咱们需求用到R语言中的Ternary包,因而经过如下所示的代码装备Ternary包。

install.packages("Ternary")

  Ternary包供给了两种制作三元图的办法。首要,咱们能够经过其供给的交互式界面,经过鼠标操作完结简略的三元图的制作作业。咱们能够经过如下所示的代码翻开这一交互式界面。

Ternary::TernaryApp()

  交互式界面翻开后,如下图所示。咱们能够依照其间各个按钮、参数的介绍,手动对三元图加以修正,并终究导出图画。

  咱们这儿首要介绍根据代码的绘图办法,因而交互式界面就不再过多介绍了;咱们假如有需求,能够对交互式界面绘图的办法加以自行测验。

  首要,经过代码制作三元图,咱们需求导入Ternary包。

library(Ternary)

  最简略的三元图制作方法,便是经过图下的代码,生成一个最根本的三元图。

TernaryPlot()

  运转上述代码,将得到如下所示的图片。

  当然,咱们需求结合实际的需求,对这个简略的三元图加以个性化修正。首要,本文所用到的悉数代码如下所示。

library(Ternary)
# dev.off()

TernaryPlot(alab = "Terrain \u2192", blab = "Vegetation \u2192", clab = "\u2190 Climate",
            lab.col = c("red", "green", "blue"),
            main = "Test Ternary Plot",
            point = "up", lab.cex = 0.8, grid.minor.lines = 0,
            grid.lty = "solid", col = rgb(0.9, 0.9, 0.9), grid.col = "white",
            axis.col = rgb(0.6, 0.6, 0.6), ticks.col = rgb(0.6, 0.6, 0.6),
            axis.rotate = FALSE,
            padding = 0.08)

cols <- TernaryPointValues(rgb)
ColourTernary(cols, spectrum = NULL)

data_points <- list(
  O = c(255, 128, 0),
  Y = c(255, 255, 0),
  P = c(255, 0, 255),
  C = c(0, 255, 255)
)
AddToTernary(points, data_points, pch = 21, cex = 2.8,
             bg = vapply(data_points,
                         function (x) rgb(x[1], x[2], x[3], 255, maxColorValue = 255),
                         character(1))
             )
AddToTernary(text, data_points, names(data_points),cex = 0.8, font = 2)

legend("topright",
       legend = c("Orange", "Yellow", "Purple", "Cyan"),
       cex = 0.8, bty = "n", pch = 21, pt.cex = 1.8,
       pt.bg = c(rgb(255, 128, 0, 255, NULL, 255),
                 rgb(255, 255, 0, 255, NULL, 255),
                 rgb(255, 0, 255, 255, NULL, 255),
                 rgb(0, 255, 255, 255, NULL, 255)),
       )

  运转上述代码,咱们得到的终究成果图画如下图所示。

  接下来,咱们就对上述代码加以介绍与解说。这儿需求留意,本文仅对咱们用到的参数加以简略的介绍,其间许多参数的意义其实我也还没太搞清楚;咱们在实际使用时,假如对参数还有其他疑问,能够参阅Ternary包的官方协助文档:https://ms609.github.io/Ternary/reference/index.html 。

  首要,代码中的榜首部分,即TernaryPlot()函数,便是Ternary包制作三元图的根本函数;咱们经过修正其间各项参数,然后修正终究成图中各个部分的特点。其间,函数的榜首行,也便是alab最初的这一行,表明三角形三条边别离要显现的字符,也便是“标示”;lab.col则表明三角形中三条边对应的坐标轴的文字标示,需求用什么色彩来表明;main表明三元图的标题point表明三角形摆放的视点(例如我这儿的"up"就表明将其间的一个角朝上放置);这以后的两个参数lab.cexgrid.minor.lines,则别离表明坐标轴的标示的字号与三元图的最小单位格网线;因为我这儿是做一张三角形别离表明RGB三种色彩的色彩空间图,因而就没有设置格网线。

  随后,函数第五行的grid.lty表明三元图格网线的类型,这以后的参数col表明三元图内部的制作色彩,随后的参数grid.col表明格网线的色彩(当然我这儿并没有设置格网线);接下来的参数axis.col表明三元图三条轴的色彩,参数ticks.col则表明三条轴上对应的标签(不是文字标示)的色彩;参数axis.rotate则表明是否要旋转标签;最终一个padding参数则用以操控图片的缩放

  接下来,因为咱们期望经过RGB三种色彩的填充来完成三元图的上色,因而声明一个cols变量,并经过ColourTernary()函数将其填充到三元图中。

  此外,为了便利咱们看图,咱们期望在这个三角形的RGB色彩空间图中,增加几个要害色彩的点,作为咱们看图时的参阅。因而,咱们经过RGB值来确认几个色彩点,将其存储在data_point中;随后,经过AddToTernary()函数将其导入三元图中。

  接下来,也便是代码中的最终一部分,咱们经过legend()函数为图片增加图例。这儿的图例,其实便是咱们在前一过程中,为图片增加的几个首要色彩点的图例。首要,函数的榜首个参数"topright",表明咱们期望将图例增加到图片的右上角;随后的几行参数,便是调整图例的字体、字号、要显现的内容等。

  在经过调整代码,取得咱们满足的三元图后,假如咱们是用RStudio进行代码的编撰,能够在“Plots”中挑选“Export”→“Save as Image...”选项,将图片导出;如下图所示。

  不过这儿需求留意,在RStudio中导出的图片往往清晰度不够高;假如咱们期望提高图片的精度,能够挑选导出.eps格局的图片素材;如下图所示。

  随后,在Adobe IllustratorAI)软件中翻开刚刚保存的.eps格局文件;此刻,不只能够直接对图片加以进一步修正,还能够用图片格局保存更高精度的图片。

  至此,功德圆满。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=226

分享给朋友:

“制作三元图、色彩空间图:R言语代码” 的相关文章

rust腐蚀多少钱,了解其经济影响

目前《Rust(腐蚀)》在Steam国区的售价为136元人民币。如果你不急于购买,可以留意Steam上的促销活动,有时会有折扣,最低曾达到25元人民币Rust腐蚀的代价:了解其经济影响在工业领域,Rust(铁锈)是一种常见的腐蚀现象,它不仅影响设备的性能和寿命,还会带来显著的经济损失。本文将探讨Ru...

python字符串反转, 使用字符串切片反转字符串

字符串 Hello, World! 的反转结果是 !dlroW ,olleH。 Python字符串反转:多种方法详解在编程中,字符串反转是一个常见的操作,它涉及到将字符串中的字符顺序颠倒。Python作为一门简洁而强大的语言,提供了多种方法来实现这一功能。本文将详细介绍Python中字符串反转的多种...

go 圣经,《Go圣经》概述

go 圣经,《Go圣经》概述

《圣经》是基督教和犹太教的经典,由多个书卷组成,分为旧约和新约两部分。旧约主要记录了犹太人的历史、律法和先知书,而新约则记载了耶稣基督的生平、教导和早期教会的情况。1. 旧约: 创世记:描述了上帝创造宇宙、地球和人类的故事,以及亚当和夏娃的堕落。 出埃及记:记载了以色列人从埃及奴役中的解...

go省电,GO省电——智能电池管理,助你轻松延长手机续航

go省电,GO省电——智能电池管理,助你轻松延长手机续航

为了在Go语言中实现省电效果,我们可以采取以下策略:1. 优化循环和条件判断:减少不必要的循环迭代和条件判断,避免重复计算。2. 使用更高效的数据结构:选择合适的数据结构来存储和处理数据,以减少内存使用和CPU消耗。3. 避免阻塞操作:使用非阻塞操作和异步编程,避免程序长时间占用CPU。4. 减少内...

python第三方库有哪些, 数据处理与分析库

python第三方库有哪些, 数据处理与分析库

1. 数据分析与科学计算: NumPy:用于科学计算的基础库,提供多维数组对象和大量的数学函数。 Pandas:提供高性能、易用的数据分析工具,用于数据清洗、数据准备等。 SciPy:基于NumPy的扩展库,提供科学计算功能,如优化、线性代数、积分等。 Matplotlib:...

java项目

java项目

当然,我可以帮助你理解或解答有关Java项目的问题。无论是关于Java编程的基础知识、特定项目的指导,还是对Java技术栈中的某个工具或框架的疑问,我都可以提供帮助。请告诉我你具体需要什么帮助,我会尽力提供支持。Java项目实战:构建一个简单的在线书店系统一、项目背景与需求分析随着人们对阅读的热爱,...