【问题标题】:Auto-assign a colour to a 3D scatterplot point based on column value in R根据 R 中的列值自动为 3D 散点图点分配颜色
【发布时间】:2021-02-15 12:27:31
【问题描述】:

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

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

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

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

plot3d(db_cluster)

【问题讨论】:

    标签: r plot colors 3d


    【解决方案1】:

    假设您的数据如下所示:

    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)
    

    【讨论】:

    • 嗨,我的“集群”列的数据包含 0-18 之间的数字。我收到一条错误消息Error in col2rgb(colors) : numerical color values must be positive 知道如何解决这个问题吗?
    • @zlee11 你可以做col = 1 + db_cluster[,4] 这样就不会有零值
    • 对,最后一个问题 - 我如何将图例添加到这个情节中?
    • @zlee11 请参阅 this answer ,如果我的回答有帮助,请考虑将其标记为已接受 - 谢谢。
    • 我以前见过,但似乎他们是根据唯一值的数量手动输入的。有没有办法自动分配图例? Similar to this, except that my data is in a matrix format
    猜你喜欢
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2019-05-14
    • 2014-10-09
    相关资源
    最近更新 更多