我正在使用 rgl 库构建 3d 图。有这样的问题:位于某些区域的点必须接收某些颜色。让我们以这个简单的图表为例。
library(rgl)
open3d()
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x, y)
plot3d(x, y, z, col = "blue")
假设我希望所有x
小于 -1 的点都用绿色着色,从 -1 到 1 用黄色着色,高于 1 用红色着色。尝试做这样的事情
palette <- colorRampPalette(c("blue", "green", "yellow", "red"))
col.table <- palette(10)
col.index <- cut(x, 10)
plot3d(x, y, z, col = col.index)
但在这种情况下,它cut
只是将向量拆分为指定数量的间隔(在本例中为 10)。是否可以自己指定分区阈值?
找到了一个非常简单的解决方案。我们根据将分配的颜色创建一个功能规则:
使用函数
sapply
,我们根据给定的规则形成一个颜色向量: