根据为 R 中的
Ternary
包提供的文档和教程,以下脚本生成一个三元图,其中三角形的每个顶点对应于 RGB 颜色。我正在尝试生成相同的图,但手动指定分配给每个顶点(轴)的三种颜色。
library (Ternary)
TernaryPlot()
cols <- TernaryPointValues(rgb)
ColourTernary(cols, spectrum = NULL)
我想生成一个三元图,而不是基本 R 的 RGB 颜色,其中顶点被分配颜色
"#016699", "#769022", and "#F99C1C"
。
我知道函数
TernaryPointValues
生成一个矩阵,并为三元图中的每个坐标分配了颜色。有没有办法在该函数中指定除 rgb 之外的三种颜色?
除了
Ternary
库之外,欢迎使用其他 R 软件包(例如 ggtern
)的解决方案。
我们只需要编写一个在三种颜色之间进行插值的函数。我们可以在 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)