【发布时间】:2015-10-19 12:38:26
【问题描述】:
我有一个看起来像这样的数据集
140400 70.7850 1
140401 70.7923 2
140402 70.7993 3
140403 70.8067 4
140404 70.8139 5
140405 70.8212 3
其中第一列对应于时间(数据点之间的一秒间隔)并将位于 x 轴上,第二列对应于距离并将位于 y 轴上。第三列是一个数字(一到五),它是运动的限定。
我想制作一个图,根据前一个数据点的数量来改变两点之间线条的颜色。例如,我希望第一个和第二个数据点之间的线是红色的,因为限定值是 1。
我看过很多关于根据强度值制作颜色滑动比例的帖子,但我只想要 5 种颜色:分别为(红色、橙色、黄色、绿色和蓝色)。
我试着做这样的事情:
plot(x,y,{'r','o','y','g','b'})
但没有运气。
关于如何解决这个问题的任何想法?尽可能不循环。
【问题讨论】:
-
循环有什么问题?您要求恕我直言,没有循环就无法完成。
-
假设您的矩阵存储在
A:colors='rmygb'; figure; hold on; for idx = 1 : size(A,1)-1, plot(A(idx:idx+1,1), A(idx:idx+1,2), colors(A(idx,3))); end中尝试此操作。试一试,看看它是如何运行的。顺便说一句,o不支持作为颜色,因为o表示圆形标记。我已经用洋红色替换了颜色。 -
你有什么样的数据在图表上绘制 100,000 个点会有用?人们只能从图表中收集到这么多信息,而且放置更多数据点通常会使弄清楚发生了什么变得更加困难。看到 100,000 条线段可能不是很有用,使用
scatter会给你几乎相同的信息,我不保证它会有用! -
如果您想要一个散点图,您可以通过
[i,j]=find(A==1)等将数据划分为五个矩阵。这将为您提供第三个值等于1的行。然后,您可以执行scatter(x(i),y(j),'r'); hold on,然后再重复四次。 -
@rayryeng 自 Matlab 2014b 以来,感谢 Yair Altman 现在可以在没有循环的情况下完成:undocumented Matlab。
标签: matlab plot colors matlab-figure colormap