Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中制作三维直方图_R_Plot_3d_Histogram - Fatal编程技术网

如何在R中制作三维直方图

如何在R中制作三维直方图,r,plot,3d,histogram,R,Plot,3d,Histogram,这就是我的目标:根据x在z轴上绘制y的频率 这些是我的问题:我有一个两列数组(x和y),需要将x划分为几个类(p.ex.0.2ou 0.5),并计算x的每个类的y的频率。该图应在“地面”平面图中显示为x-y图,频率在z轴上。它可以像一个曲面或一个3D直方图。我尝试使用plot3D软件包的hist3D功能制作,但我不知道我做错了什么 这是我试图做的一个例子: 谢谢 使用一些模拟数据,这会得到你想要的。关键是您必须使用cut()函数创建双变量箱。然后,我们可以使用table()函数计算每个因子级别

这就是我的目标:根据
x
z
轴上绘制
y
的频率

这些是我的问题:我有一个两列数组(
x
y
),需要将
x
划分为几个类(p.ex.0.2ou 0.5),并计算
x
的每个类的
y
的频率。该图应在“地面”平面图中显示为
x-y
图,频率在
z
轴上。它可以像一个曲面或一个3D直方图。我尝试使用
plot3D
软件包的
hist3D
功能制作,但我不知道我做错了什么

这是我试图做的一个例子:


谢谢

使用一些模拟数据,这会得到你想要的。关键是您必须使用
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")
库(plot3D)
##模拟数据:
种子集(2002)

x该示例中的颜色反映在高度中,是多余的。你可以做一个2d+彩色热图,并给出相同的信息,而不会在高栏后面遮住一大块数据。@TheLate Mail,谢谢你的提示。我试试热图。谢谢,伙计。我在5月份的数据中使用了你的代码,效果很好,但正如@thelatemail所说,也许热图是最好的选择。在这种情况下,我当然会同意。:)我编辑了我的答案,将其记录为一个选项:@forrensr.Stevens,这样看起来好多了!分析新的绘图我正在考虑一些不同的东西,也许你也可以帮我:我想为所有一起绘制的每个
x
类使用“独立直方图”绘制另一个绘图。只是想明确一点:在你的例子中,每一列的somatory应该是1。在这种情况下,比例中不会有超高的值,但会有一个从0到1的更平滑的热图。我不确定我是否理解您的要求。你所说的“躯体理论”是什么意思?我假设你想以某种方式来衡量这些值,但要以所有表格或列中关节计数的最大值来衡量?你说的“平滑”热图是什么意思?您可以改变您的箱子宽度,以创建更精细的分级直方图,如果您喜欢的话?或者你可以把生成的2D热图也插值?你可以。一种简单的方法是将矩阵对象转换为光栅,并将其插值为更精细的栅格。请参阅,以获得一个良好的起点。