如何在 rgl 3d 图中绘制对数转换数据?

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

我使用

rgl
包绘制 3D 绘图,并且我想使用对数转换的
z
轴。我所做的是:

# Dummy data.
x <- seq(1, 2, length = 10); y <- seq(1, 3, length = 10)
z <- outer(x, y, function(x, y) x + exp(y)); z <- log(z)
# Plot.
rgl::persp3d(x, y, z, col= "white")
rgl::surface3d(x, y, z, front = "lines")

Log Plot

3d 对象看起来如我所料。但我希望 z 标签不要显示对数值,而是希望它显示原始值,即

3
所在的位置应该有
20
(因为
exp(3)
约为
20
)。所以我正在寻找一些相当于
ggplot2::scale_y_continuous(trans= "log10")
的东西,如这里所讨论的。如何使用
rgl
包做到这一点?

r plot 3d rgl
1个回答
0
投票

rgl
对此没有提供太多支持。 基本思想是告诉
persp3d()
跳过轴,然后使用
box3d()
axis3d()
等调用将它们绘制到您想要的位置。 例如,

library(rgl)

x <- seq(1, 2, length = 10); y <- seq(1, 3, length = 10)
z <- outer(x, y, function(x, y) x + exp(y)); z <- log10(z)
# Plot.
open3d()
persp3d(x, y, z, col= "white", polygon_offset = 1, axes = FALSE)
surface3d(x, y, z, front = "lines")

box3d()
axis3d("x")
axis3d("y")

zticks <- pretty(z)
zlabels <- signif(10^zticks, 2)

axis3d("z", at = zticks, labels = zlabels)

这不会产生“浮动”轴;他们可能可以使用

mtext3d()
和其他功能,但工作量很大。

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