选择特定颜色来填充三元图

问题描述 投票:0回答:1

根据为 R 中的

Ternary
包提供的文档和教程,以下脚本生成一个三元图,其中三角形的每个顶点对应于 RGB 颜色。我正在尝试生成相同的图,但手动指定分配给每个顶点(轴)的三种颜色。

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

我想生成一个三元图,而不是基本 R 的 RGB 颜色,其中顶点被分配颜色

"#016699", "#769022", and "#F99C1C"

我知道函数

TernaryPointValues
生成一个矩阵,并为三元图中的每个坐标分配了颜色。有没有办法在该函数中指定除 rgb 之外的三种颜色?

除了

Ternary
库之外,欢迎使用其他 R 软件包(例如
ggtern
)的解决方案。

r ggplot2 plot ternary
1个回答
0
投票

我们只需要编写一个在三种颜色之间进行插值的函数。我们可以在 RGB 空间中进行插值,就像您的示例一样。

library (Ternary)

color_interp <- function(a, b, c, A = "#016699", B = "#769022", C = "#F99C1C") {
  m <- cbind(col2rgb(A), col2rgb(B), col2rgb(C)) / 256
  rgb(matrix(c(a, b, c), 1) %*% t(m))
}
color_interp_vec <- Vectorize(color_interp, c('a', 'b', 'c'))
cols <- TernaryPointValues(color_interp_vec)    

TernaryPlot()
ColourTernary(cols, spectrum = NULL)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.