0

我的 R 数据采用xyz格式,分别是长度为 10 和 19 的向量,并且x是10x19 整数的矩阵。我有以下代码可以打印我的 3D 表面:yz

height <- (z - range(z)[1]) / diff(range(z))
r.prop <- height
g.prop <- 0
b.prop <- 1 - height
color  <- rgb(r.prop, g.prop, b.prop, maxColorValue=1)

persp3d(x, y, z, theta=50, phi=25, expand=0.75, col=color, ticktype="detailed",
    xlab="filesize [kb]", ylab="record size [kb]", zlab="speed [b/s]", 
    axes=TRUE)

我的问题是y轴包含 2 的幂(4、8、16、32、64、...、2048、..),这会将我的大部分数据点压缩到绘图的低范围部分。我想要的是数据点的均匀分布,即点 4 和 8 之间的空间应该与 1024 和 2048 之间的空间相同,就像它在 Excel 电子表格曲面图中一样。

你能告诉我哪个命令或参数可以用 persp3d 实现吗?

非常感谢!洛迪

加法:在将轴更改为 log2,或者只是执行 ac(1:length(x)) 和 c(1:length(y)) 而不是实际的轴值之后,它看起来更好,但现在有这些奇怪的拼图形状我的数据中根本没有体现。你们知道这里发生了什么吗?在此处查看图片http://i.stack.imgur.com/WBI3r.png

4

1 回答 1

0

尝试log2(y)代替y

persp3d(x, log2(y), z, theta=50, phi=25, expand=0.75, col=color, ticktype="detailed",
    xlab="filesize [kb]", ylab="record size [kb]", zlab="speed [b/s]", axes=FALSE, 
    normal_x=x, normal_y=y, normal_z=z)
于 2013-11-14T03:10:06.843 回答