查看: 802|回复: 14|关注: 0

[已解决] matlab四维数组,第四维用颜色表示

[复制链接]

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
就是数据集里面有四列数据(X,Y,Z,V),每一行是一个样本点,样本点的前三个数是这个点的位置坐标,第四个数是这个点的密度(也就是在这个点的概率),四个数据没有函数关系。我希望把四维图画出来,第四个点的大小用颜色带表示出来,作为它在此处概率的量度。请问这个怎么写?
数据是有一个dat文件可以直接输出,里面是四列数据(这里没列完整):
0 0 0 0.000000
0 0 1 0.000003
0 0 2 0.000003
0 0 3 0.000004
0 0 4 0.000004
0 0 5 0.000005
0 0 6 0.000006
0 0 7 0.000007
0 0 8 0.000009
0 0 9 0.000010
0 0 10 0.000011
0 0 11 0.000012
0 0 12 0.000012

论坛优秀回答者

5

主题

1703

帖子

486

最佳答案
  • 关注者: 144
发表于 2019-10-28 12:37:17 | 显示全部楼层
scatter3函数
自己把第四列转化成成函数语法里面的C矩阵
  1. www.mathworks.com/help/matlab/ref/scatter3.html
复制代码
提问请:①准确描述问题②贴代码别贴代码的截图③勿一问多帖或一帖多问④及时反馈⑤看清回复的每个字

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
 楼主| 发表于 2019-10-28 19:39:09 | 显示全部楼层
TouAkira 发表于 2019-10-28 12:37
scatter3函数
自己把第四列转化成成函数语法里面的C矩阵

可以麻烦写一下比较全的代码吗,我是小白,懂得思路但是总是没法实现整体的操作,可能也是对matlab了解的太少,但是现在比较急着用这个代码去实现一个图像的操作,所以想先看看怎么实现,再去改进。

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

入门

166 麦片

财富积分


50500


1

主题

150

帖子

31

最佳答案
  • 关注者: 2
发表于 2019-10-28 21:23:30 | 显示全部楼层 |此回复为最佳答案
卡西莫多ck 发表于 2019-10-28 19:39
可以麻烦写一下比较全的代码吗,我是小白,懂得思路但是总是没法实现整体的操作,可能也是对matlab了解的 ...

2楼说的明白了scatter3(X,Y,Z,S,C) 使用 C 指定的颜色绘制每个圆圈。X,Y,Z为点坐标,S 为绘制的每个点的大小
下段代码供参考
  1. data = [0 0 0 0.000000
  2. 0 0 1 0.000003
  3. 0 0 2 0.000003
  4. 0 0 3 0.000004
  5. 0 0 4 0.000004
  6. 0 0 5 0.000005
  7. 0 0 6 0.000006
  8. 0 0 7 0.000007
  9. 0 0 8 0.000009
  10. 0 0 9 0.000010
  11. 0 0 10 0.000011
  12. 0 0 11 0.000012
  13. 0 0 12 0.000012];
  14. x = data(:,1);
  15. y = data(:,2);
  16. z = data(:,3);
  17. value = data(:,4);
  18. scatter3(x,y,z,30,value,'filled')
  19. colorbar
复制代码


新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
 楼主| 发表于 2019-10-29 10:45:17 | 显示全部楼层
帕拉代斯 发表于 2019-10-28 21:23
2楼说的明白了scatter3(X,Y,Z,S,C) 使用 C 指定的颜色绘制每个圆圈。X,Y,Z为点坐标,S 为绘制的每个点的 ...

嗯嗯好的,谢谢

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
 楼主| 发表于 2019-10-29 10:51:29 | 显示全部楼层
本帖最后由 卡西莫多ck 于 2019-10-29 11:01 编辑
帕拉代斯 发表于 2019-10-28 21:23
2楼说的明白了scatter3(X,Y,Z,S,C) 使用 C 指定的颜色绘制每个圆圈。X,Y,Z为点坐标,S 为绘制的每个点的 ...

我的数据是在一个dat文件里,请问这个怎么导出来啊,是不是还差个什么,显示引用了已清除的变量 data。
  1. clear
  2. clc
  3. set(gcf,'color','white');
  4. load('D:\ftp_down\connection.dat','r');
  5. x = data(:,1);
  6. y = data(:,2);
  7. z = data(:,3);
  8. value = data(:,4);
  9. scatter3(x,y,z,30,value,'filled')
  10. colorbar
复制代码

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

入门

166 麦片

财富积分


50500


1

主题

150

帖子

31

最佳答案
  • 关注者: 2
发表于 2019-10-29 11:37:47 | 显示全部楼层
卡西莫多ck 发表于 2019-10-29 10:51
我的数据是在一个dat文件里,请问这个怎么导出来啊,是不是还差个什么,显示引用了已清除的变量 data。
...

晕,你把你导入的dat数据赋值给data变量啊
  1. data = load('D:\ftp_down\connection.dat');
复制代码

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
 楼主| 发表于 2019-10-29 13:55:21 | 显示全部楼层
帕拉代斯 发表于 2019-10-29 11:37
晕,你把你导入的dat数据赋值给data变量啊

这样啊,谢谢谢谢,导师让我实现一个密度图的绘制,我之前没怎么学过matlab,才在慢慢摸索,不好意思啊问这么简单的问题

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
 楼主| 发表于 2019-10-29 14:28:14 | 显示全部楼层
本帖最后由 卡西莫多ck 于 2019-10-29 16:08 编辑
帕拉代斯 发表于 2019-10-29 11:37
晕,你把你导入的dat数据赋值给data变量啊

好的,谢谢,还有一个问题,我想显示value=0.04以上的颜色,我查到用caxis函数,也画出来了,但是0.04以下的数据是和0.04颜色是一致的,怎么让0.04以下的数据不显示颜色呢, 是要在数值里面加个判断语句吗还是?

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

入门

166 麦片

财富积分


50500


1

主题

150

帖子

31

最佳答案
  • 关注者: 2
发表于 2019-10-29 16:33:57 | 显示全部楼层
卡西莫多ck 发表于 2019-10-29 14:28
好的,谢谢,还有一个问题,我想显示value=0.04以上的颜色,我查到用caxis函数,也画出来了,但是0.04以下 ...

那你就把这部分数据筛出去,不显示就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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