【问题标题】:Most efficient way of drawing a heatmap from matrix with OpenGL?使用OpenGL从矩阵绘制热图的最有效方法?
【发布时间】:2026-02-10 15:05:01
【问题描述】:

假设一个整数值矩阵m

m <- matrix(sample(1:10, 100, replace = TRUE), nrow = 10)

给定一个将这些值从 1 到 10 映射到某些颜色的调色板,如何将矩阵 m 显示为带有 OpenGL 图形的 R 中的热图,例如使用rgl 包? (最好以最有效的方式。)

【问题讨论】:

    标签: r opengl


    【解决方案1】:

    非常彻底的答案here 表明这可能不是您想要的;您可能想针对那里的其他基准解决方案尝试下面的解决方案。尽管如此:

    设置数据和颜色图

    set.seed(101)
    library(viridisLite)
    vv <- viridis(10)
    m <- matrix(sample(1:10, 100, replace = TRUE), nrow = 10)
    

    画图:

    library(rgl)
    view3d(theta=0, phi=0)  ## head-on view
    par3d(zoom=0.7)         ## (almost) fill window
    surface3d(x = 1:10, y = 1:10, z = matrix(0, 10,10), 
              color = vv[m],
              smooth=FALSE, lit=FALSE  ## turn off smoothing/lights
     )
    

    您可能需要在表面之间使用pop3d() 来清除之前的表面...

    【讨论】:

      最近更新 更多