我有x
,y
和z
格式的我的R数据,x
和y
分别是长度为10和19的向量,{ {1}}是10x19整数的矩阵。我有以下代码打印我的3D表面:
z
我的问题是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)
轴包含2的幂(4,8,16,32,64,...,2048,..),它将我的大部分数据点压缩为低 - 范围的一部分情节。我想要的是数据点的均匀分布,即第4点和第8点之间应该是1024和2048之间的相同空间,就像它在Excel电子表格表面图中一样。
你能告诉我使用persp3d会发生哪种命令或参数吗?
非常感谢! Loddi
增加: 将轴更改为log2,或者只是执行ac(1:length(x))和c(1:length(y))而不是实际的轴值,它看起来更好但现在有这些奇怪的拼图形状不是完全代表我的数据。你们知道这里发生了什么吗? 看这里的图片http://i.stack.imgur.com/WBI3r.png
答案 0 :(得分: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)