gpt4 book ai didi

r - r中的三向颜色渐变填充

转载 作者:行者123 更新时间:2023-12-03 11:36:41 26 4
gpt4 key购买 nike

我怎样才能像这样将三路颜色渐变(热图)填充到三点图(三角形图)。

plot(NA,NA,xlim=c(0,1),ylim=c(0,sqrt(3)/2),asp=1,bty="n",axes=F,xlab="",ylab="")
segments(0,0,0.5,sqrt(3)/2)
segments(0.5,sqrt(3)/2,1,0)
segments(1,0,0,0)

enter image description here

颜色应与三线图并行运行。

最佳答案

这是一种方法 - 这有点像黑客,使用点逐个绘制渐变:

plot(NA,NA,xlim=c(0,1),ylim=c(0,1),asp=1,bty="n",axes=F,xlab="",ylab="")
segments(0,0,0.5,sqrt(3)/2)
segments(0.5,sqrt(3)/2,1,0)
segments(1,0,0,0)
# sm - how smooth the plot is. Higher values will plot very slowly
sm <- 500
for (y in 1:(sm*sqrt(3)/2)/sm){
for (x in (y*sm/sqrt(3)):(sm-y*sm/sqrt(3))/sm){
## distance from base line:
d.red = y
## distance from line y = sqrt(3) * x:
d.green = abs(sqrt(3) * x - y) / sqrt(3 + 1)
## distance from line y = - sqrt(3) * x + sqrt(3):
d.blue = abs(- sqrt(3) * x - y + sqrt(3)) / sqrt(3 + 1)
points(x, y, col=rgb(1-d.red,1 - d.green,1 - d.blue), pch=19)
}
}

和输出:

enter image description here

你想用这些梯度来表示数据吗?如果是这样,可以更改 d.red , d.green , 和 d.blue这样做 - 不过我还没有测试过类似的东西。我希望这有点帮助,但是使用 colorRamp 的正确解决方案例如,可能会更好。

编辑 :根据 baptiste 的建议,这就是您将信息存储在向量中并一次性绘制的方式。它要快得多(尤其是在 sm 设置为 500 的情况下,例如):
plot(NA,NA,xlim=c(0,1),ylim=c(0,1),asp=1,bty="n",axes=F,xlab="",ylab="")
sm <- 500
x <- do.call(c, sapply(1:(sm*sqrt(3)/2)/sm,
function(i) (i*sm/sqrt(3)):(sm-i*sm/sqrt(3))/sm))
y <- do.call(c, sapply(1:(sm*sqrt(3)/2)/sm,
function(i) rep(i, length((i*sm/sqrt(3)):(sm-i*sm/sqrt(3))))))
d.red = y
d.green = abs(sqrt(3) * x - y) / sqrt(3 + 1)
d.blue = abs(- sqrt(3) * x - y + sqrt(3)) / sqrt(3 + 1)
points(x, y, col=rgb(1-d.red,1 - d.green,1 - d.blue), pch=19)

关于r - r中的三向颜色渐变填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11777124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com