我已经在rgl中绘制了一个网格以可视化其上的数据。即,网格具有的颜色源自将色彩图应用于其数据(每个顶点处有一个标量值)。这是一个最小的示例,该示例由具有单个面的网格组成:
library(rgl);
library(squash);
# create a mesh
vertices <- c(
-1.0, -1.0, 0, 1.0,
1.0, -1.0, 0, 1.0,
1.0, 1.0, 0, 1.0,
-1.0, 1.0, 0, 1.0
)
indices <- c( 1, 2, 3, 4 )
# add a data value for each vertex
morph_data = rnorm(length(indices), mean = 3, sd = 1)
# create colors from values by applying a colormap
col = squash::cmap(morph_data, map = squash::makecmap(morph_data, colFn = squash::jet));
# plot
open3d()
shade3d( qmesh3d(vertices, indices), col=col )
如何在rgl中向此绘图添加颜色条?
[
bgplot3d()
在rgl
图的背景中绘制任何类型的2D图。周围有很多不同的颜色条实现;参见Colorbar from custom colorRampPalette进行讨论。该主题的最后一篇文章是在2014年,所以可能会有更新的解决方案。例如,使用fields::image.plot
功能,可以将其放在绘图后面:
bgplot3d(fields::image.plot(legend.only = TRUE, zlim = range(morph_data), col = col) )
此方法的一个已证明的缺点是窗口的大小无法很好地调整;您应该先设置窗口大小,然后添加颜色栏。如果您确实使用
col
,则还需要处理image.plot
的定义,以显示四种以上的颜色。