使用OpenGL从矩阵绘制热图的最有效方法?

Posted

技术标签:

【中文标题】使用OpenGL从矩阵绘制热图的最有效方法?【英文标题】:Most efficient way of drawing a heatmap from matrix with OpenGL? 【发布时间】:2019-05-04 02:33:38 【问题描述】:

假设一个整数值矩阵m

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

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

【问题讨论】:

【参考方案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() 来清除之前的表面...

【讨论】:

以上是关于使用OpenGL从矩阵绘制热图的最有效方法?的主要内容,如果未能解决你的问题,请参考以下文章

将 OpenGL 用于 2d 游戏的最有效方法是啥?

热图绘制

为多边形轮廓绘制圆的最有效方法

案例演示 R语言绘制热图代码

从一维 numpy 数组中获取这种矩阵的最有效方法是啥?

OpenGL - 用纹理绘制正方形的最简单方法