根据 R 中的列值自动为 3D 散点图点分配颜色

Auto-assign a colour to a 3D scatterplot point based on column value in R

我有一个名为 db_cluster 的 n x 4 矩阵。我想绘制矩阵中的 3-D 点,并根据矩阵第 4 列(我们称之为 'cluster')中的值为这些点分配颜色。

我在网上找到的大部分信息都手动为每个列值分配了一种颜色(即,如果一列中有 3 个唯一数据,它们将为每个值分配红色、蓝色、绿色。

我的 'cluster' 列中有 18 个唯一值,因此手动将每个值分配给一种颜色是不可行的。有没有办法自动为值分配颜色并绘制它?

顺便说一句,我正在使用 plot3d。

plot3d(db_cluster)

假设您的数据如下所示:

db_cluster <- matrix(sample(10, 40, TRUE), ncol = 4)
db_cluster
#>       [,1] [,2] [,3] [,4]
#>  [1,]   10    5    6    9
#>  [2,]    4    5    4    5
#>  [3,]    5    2    9    5
#>  [4,]    9    1    5    3
#>  [5,]    8   10    3    9
#>  [6,]   10    2    2    2
#>  [7,]   10    3    3    9
#>  [8,]    8    5    2    6
#>  [9,]    9    5   10    4
#> [10,]    5    4    3    7

那么你可以这样做:

rgl::plot3d(x   = db_cluster[,1], 
            y   = db_cluster[,2], 
            z   = db_cluster[,3], 
            col = db_cluster[,4], size = 10)