在 R 中创建 3d 直方图时,使用 Plot3D 库中的 Hist3D,bin 不与轴刻度对齐

问题描述

正如我的标题所暗示的,我正在尝试使用 Plot3D 包创建 3D 直方图。以下是我遇到的问题的最低工作(或不工作)示例:

library(plot3D)

x = runif(10000)/2
y=runif(10000)

cuts = c(0,0.2,0.4,0.6,0.8,1)

x_cut = cut(x,cuts)
y_cut = cut(y,cuts)

xy_table = table(x_cut,y_cut)

hist3D(z=xy_table,ticktype = "detailed")

这会产生以下图像:

enter image description here

正如您在图像中所观察到的,直方图的 bin 延伸到 [0,1]x[0,1] 之外。无论如何我可以强制垃圾箱与轴上的刻度线完全对齐吗?也就是说,我希望图表能够正确表示所有数据点的 x 和 y 值都在 0 和 1 之间。现在查看该图,人们可能会认为包含原点的 bin 也可能包含数据点 (-0.1,0)。这不会发生在我试图显示的数据中,我需要轴来传达这一点。

我一整天都在摆弄各种轴参数等等,但无法让它工作。例如,如果我尝试使用命令绘制事物

hist3D(z=xy_table,ticktype = "detailed",xlim=c(0,1),ylim=c(0,1))

比我更糟糕的是:

enter image description here

我觉得我一定遗漏了一些明显的东西,但我只是没有看到它是什么。如果有人有答案,请分享。感谢您抽出时间阅读我的问题。

解决方法

如果您没有定义 0 - 1hist3D 范围,

x 范围是 y 的默认行为。

如果您使用垃圾箱的中间 (x) 定义 y 0.1 0.3 0.5 0.7 0.9 参数,您会得到预期的结果:

hist3D(x = seq(0.1,0.9,0.2),y=seq(0.1,z=xy_table,ticktype = "detailed")

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...