如何在 R 中制作 3D 直方图
How to make 3D histogram in R
这是我的目标:根据 x
在 z
轴上绘制 y
的频率。
这些是我的问题:我有一个两列数组(x
和 y
),需要将 x
分成 classes(p.ex. 0.2 或 0.5) 并为 x
的每个 class 计算 y
的频率。该图应显示为 "ground" 计划中的 x-y
图和 z
轴中的频率。它可以像一个表面或 3D 直方图。我尝试使用 plot3D
包的 hist3D
函数来实现它,但我不知道我做错了什么。
这是我正在尝试做的一个例子:
https://www.safaribooksonline.com/library/view/r-data-visualization/9781783989508/ch06s05.html
谢谢!!
使用一些模拟数据,这应该可以满足您的需求。关键是您必须创建双变量容器,使用 cut()
函数完成。然后将分箱的因素视为水平,然后我们可以使用 table()
函数计算每个因素水平的组合,如下所示:
library(plot3D)
## Simulate data:
set.seed(2002)
x <- rnorm(1000)
y <- rnorm(1000)
## Create cuts:
x_c <- cut(x, 20)
y_c <- cut(y, 20)
## Calculate joint counts at cut levels:
z <- table(x_c, y_c)
## Plot as a 3D histogram:
hist3D(z=z, border="black")
## Plot as a 2D heatmap:
image2D(z=z, border="black")
这是我的目标:根据 x
在 z
轴上绘制 y
的频率。
这些是我的问题:我有一个两列数组(x
和 y
),需要将 x
分成 classes(p.ex. 0.2 或 0.5) 并为 x
的每个 class 计算 y
的频率。该图应显示为 "ground" 计划中的 x-y
图和 z
轴中的频率。它可以像一个表面或 3D 直方图。我尝试使用 plot3D
包的 hist3D
函数来实现它,但我不知道我做错了什么。
这是我正在尝试做的一个例子:
https://www.safaribooksonline.com/library/view/r-data-visualization/9781783989508/ch06s05.html
谢谢!!
使用一些模拟数据,这应该可以满足您的需求。关键是您必须创建双变量容器,使用 cut()
函数完成。然后将分箱的因素视为水平,然后我们可以使用 table()
函数计算每个因素水平的组合,如下所示:
library(plot3D)
## Simulate data:
set.seed(2002)
x <- rnorm(1000)
y <- rnorm(1000)
## Create cuts:
x_c <- cut(x, 20)
y_c <- cut(y, 20)
## Calculate joint counts at cut levels:
z <- table(x_c, y_c)
## Plot as a 3D histogram:
hist3D(z=z, border="black")
## Plot as a 2D heatmap:
image2D(z=z, border="black")