查看: 119|回复: 9|关注: 0

[已答复] 如何做三维空间散点的四维直方图统计?

[复制链接]

新手

9 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
发表于 2019-11-6 19:43:28 | 显示全部楼层 |阅读模式
本帖最后由 zky94 于 2019-11-7 15:05 编辑

根据关键字“三维直方图”所查找多为用hist、hist3、bar3针对二维空间散点进行统计的直方图,真正的三维散点统计直方图  视觉上应该不是柱状图 而是一群小方块堆叠的,每个小方块用颜色图谱进行量化。请问这种该如何实现?

三维散点的二维投影直方图

三维散点的二维投影直方图

MATLAB 基础讨论
版块优秀回答者

中级

1258 麦片

财富积分


5001500


0

主题

1728

帖子

254

最佳答案
  • 关注者: 43
发表于 2019-11-6 21:05:34 | 显示全部楼层
help hist3
里面有案例:
load seamount

hist3([x,y])
xlabel('Longitude')
ylabel('Latitude')
hold on

N = hist3([x,y]);

N_pcolor = N';
N_pcolor(size(N_pcolor,1)+1,size(N_pcolor,2)+1) = 0;
xl = linspace(min(x),max(x),size(N_pcolor,2)); % Columns of N_pcolor
yl = linspace(min(y),max(y),size(N_pcolor,1)); % Rows of N_pcolor

h = pcolor(xl,yl,N_pcolor);
colormap('hot') % Change color scheme
colorbar % Display colorbar
h.ZData = -max(N_pcolor(:))*ones(size(N_pcolor));
ax = gca;
ax.ZTick(ax.ZTick < 0) = [];
title('Seamount Location Histogram and Intensity Map');

新手

9 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2019-11-6 21:14:13 | 显示全部楼层
WarnerChang 发表于 2019-11-6 21:05
help hist3
里面有案例:
load seamount

这个案例依然是 二维点的直方图统计不是三维点的
是哪一个函数可以利用么?还望明示
二维投影.jpg

MATLAB 基础讨论
版块优秀回答者

中级

1258 麦片

财富积分


5001500


0

主题

1728

帖子

254

最佳答案
  • 关注者: 43
发表于 2019-11-6 21:35:42 | 显示全部楼层
zky94 发表于 2019-11-6 21:14
这个案例依然是 二维点的直方图统计不是三维点的
是哪一个函数可以利用么?还望明示 ...

看说明仔细看呢!
load carbig

X = [MPG,Weight];
hist3(X,'CDataMode','auto','FaceColor','interp')
xlabel('MPG')
ylabel('Weight')

新手

9 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2019-11-6 21:37:37 | 显示全部楼层
我一楼的图 是三维散点在xoy面的投影点的 直方图统计  可能误导了二楼
我想要实现的是三维散点的直方图统计 , 直方图区间应该是三维立体  (二维散点直方图的直方图区间是平面网格)

新手

9 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2019-11-6 21:49:13 | 显示全部楼层
WarnerChang 发表于 2019-11-6 21:35
看说明仔细看呢!
load carbig

hist3的输入X始终是M*2  我的输入X是M*3

hist3(X,...)help 截图

hist3(X,...)help 截图

MATLAB 基础讨论
版块优秀回答者

中级

1258 麦片

财富积分


5001500


0

主题

1728

帖子

254

最佳答案
  • 关注者: 43
发表于 2019-11-6 22:16:34 | 显示全部楼层
zky94 发表于 2019-11-6 21:49
hist3的输入X始终是M*2  我的输入X是M*3

噢噢 也就是你其实是个四维的数据呗! 第四维采用颜色显示呗!

MATLAB 基础讨论
版块优秀回答者

中级

1258 麦片

财富积分


5001500


0

主题

1728

帖子

254

最佳答案
  • 关注者: 43
发表于 2019-11-6 22:31:17 | 显示全部楼层
本帖最后由 WarnerChang 于 2019-11-6 22:34 编辑
zky94 发表于 2019-11-6 21:49
hist3的输入X始终是M*2  我的输入X是M*3

你既想要在二维平面上进行数据的统计,还想对统计得到的数据在Z轴方向上进行统计,是这个意思吧!

所以看四楼的示例没有问题呀,采用'FaceColor','interp'参数对Z轴方向进行颜色插值,反映在二维平面上数据统计后的结果在Z轴方向上的变化呀!
你只要将interp改成你的第三维数据(scale之后的)不就可以了吗?!

新手

9 麦片

财富积分


050


3

主题

9

帖子

0

最佳答案
 楼主| 发表于 2019-11-7 14:23:48 | 显示全部楼层
WarnerChang 发表于 2019-11-6 22:31
你既想要在二维平面上进行数据的统计,还想对统计得到的数据在Z轴方向上进行统计,是这个意思吧!

所以看 ...

两个问题:
首先我是想直接在三维空间中离散划分直方空间进行数据统计  而不是在Z轴上微分进行二维平面连续统计  
另外对于你说的“将interp改成你的第三维数据(scale之后的)”还是没弄明白  
设我要统计的X为(MPG。Weight,MPG-Weight) 还请大神多指导一下   

MATLAB 基础讨论
版块优秀回答者

中级

1258 麦片

财富积分


5001500


0

主题

1728

帖子

254

最佳答案
  • 关注者: 43
发表于 2019-11-7 21:38:31 | 显示全部楼层
zky94 发表于 2019-11-7 14:23
两个问题:
首先我是想直接在三维空间中离散划分直方空间进行数据统计  而不是在Z轴上微分进行二维平面连 ...

噢噢,如果是这样的话,好像没有现成的函数哦!
可以自己写一个划分区域的函数,设定colormap,结合count等函数实现呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表