如何在 rgl 中绘制颜色条?
How to draw a colorbar in rgl?
我在 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 中向该图添加颜色条?
我在 colorbar 中的确切含义的示例显示在 this example picture from octave.sourceforge.io.
的右侧部分
您可以使用 bgplot3d()
在 rgl
图的背景中绘制任何类型的二维图。周围有很多不同的颜色条实现;请参阅 Colorbar from custom colorRampPalette 进行讨论。该线程中的最后一个 post 是在 2014 年,因此可能会有更新的解决方案。
例如,使用fields::image.plot
函数,你可以把它放在你的绘图后面:
bgplot3d(fields::image.plot(legend.only = TRUE, zlim = range(morph_data), col = col) )
这种方法的一个记录缺点是 window 不能很好地调整大小;你应该先设置你的 window 大小,然后添加颜色条。如果您确实使用 image.plot
.
,您还需要处理 col
的定义以获得超过 4 种颜色显示
我在 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 中向该图添加颜色条?
我在 colorbar 中的确切含义的示例显示在 this example picture from octave.sourceforge.io.
的右侧部分您可以使用 bgplot3d()
在 rgl
图的背景中绘制任何类型的二维图。周围有很多不同的颜色条实现;请参阅 Colorbar from custom colorRampPalette 进行讨论。该线程中的最后一个 post 是在 2014 年,因此可能会有更新的解决方案。
例如,使用fields::image.plot
函数,你可以把它放在你的绘图后面:
bgplot3d(fields::image.plot(legend.only = TRUE, zlim = range(morph_data), col = col) )
这种方法的一个记录缺点是 window 不能很好地调整大小;你应该先设置你的 window 大小,然后添加颜色条。如果您确实使用 image.plot
.
col
的定义以获得超过 4 种颜色显示