返回信息流如果矩阵有四列,前三列是每个点的xyz坐标,第四列为0或1,我想把这些点分为两部分,第四列为0的画为红色,第四列为1的画为蓝色,应该如何实现呢?scatter3的颜色参数需要与坐标等长的char矩阵,要如何构建呢?
这是一条镜像帖。来源:北邮人论坛 / matlab / #12495同步于 2017/10/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
Matlab散点图的绘制问题
wushenyulei
2017/10/20镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
其实如果不在乎代码的简洁性,可以写个判断,当第四列数值等于0和1的时候分别绘制对应颜色的点,用plot3就行。循环前hold一下[em23]
如果在乎一行代码画出一张图的话,就仔细读一下scatter3的手册然后对应地改变矩阵的结构就行。
假设数据为data的话,是个N行4列的数据
scatter3(x,y,z,S,c):x,y,z是坐标,S是圆的大小,c是颜色参数,红色是[1,0,0],蓝色是[0,0,1]
那么对于利用如下变换可以得到0->[1,0,0],1->[0,0,1]
a*[-1,0,1]+[1,0,0] (其中a是个0,1其中之一的数)
假设a推广到列向量X,上式也是满足的代码为X*[-1,0,1]+[1,0,0]
所以有如下实现代码
scatter3(data(:,1),data(:,2),data(:,3),40,data(:,4)*[-1,0,1]+[1,0,0])