如何在rgl中绘制颜色栏?

问题描述 投票:0回答:1

我已经在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中向此绘图添加颜色条?

[的确切含义示例在this example picture from octave.sourceforge.io的右侧显示。

r rgl
1个回答
0
投票
您可以使用bgplot3d()rgl图的背景中绘制任何类型的2D图。周围有很多不同的颜色条实现;参见Colorbar from custom colorRampPalette进行讨论。该主题的最后一篇文章是在2014年,所以可能会有更新的解决方案。

例如,使用fields::image.plot功能,可以将其放在绘图后面:

bgplot3d(fields::image.plot(legend.only = TRUE, zlim = range(morph_data), col = col) )

screenshot

此方法的一个已证明的缺点是窗口的大小无法很好地调整;您应该先设置窗口大小,然后添加颜色栏。如果您确实使用col,则还需要处理image.plot的定义,以显示四种以上的颜色。

© www.soinside.com 2019 - 2024. All rights reserved.