gpt4 book ai didi

matlab - 根据第三个值更改二维绘图线的颜色

转载 作者:太空宇宙 更新时间:2023-11-03 19:22:05 24 4
gpt4 key购买 nike

我有一个看起来像这样的数据集

 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'})

但没有运气。

关于如何解决这个问题的任何想法?尽可能不循环。

最佳答案

您也可以使用适用于 2014b 之前(至少可追溯到 2009a)的 Matlab 版本的技巧。
然而,它永远不会像您预期的那样简单(除非您在这里为其中一个解决方案编写包装器,否则您可以忘记 plot(x,y,{'r','o','y',' g','b'})).

诀窍是使用surface 而不是line 对象。表面受益于它们的 CData 属性和许多有用的功能来利用颜色映射和纹理。

Matlab surf 不处理一维数据,它需要一个矩阵作为输入,所以我们将通过复制每个坐标集来提供它(例如 xx=[x,x] ).
不过别担心,表面会像一条线一样细,所以最终的结果并不难看。

%% // your data
M=[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 = M(:,1) ; %// extract "X" column
y = M(:,2) ; %// same for "Y"
c = M(:,3) ; %// extract color index for the custom colormap

%% // define your custom colormap
custom_colormap = [
1 0 0 ; ... %// red
1 .5 0 ; ... %// orange
1 1 0 ; ... %// yellow
0 1 0 ; ... %// green
0 0 1 ; ... %// blue
] ;

%% // Prepare matrix data
xx=[x x]; %// create a 2D matrix based on "X" column
yy=[y y]; %// same for Y
zz=zeros(size(xx)); %// everything in the Z=0 plane
cc =[c c] ; %// matrix for "CData"

%// draw the surface (actually a line)
hs=surf(xx,yy,zz,cc,'EdgeColor','interp','FaceColor','none','Marker','o') ;

colormap(custom_colormap) ; %// assign the colormap
shading flat %// so each line segment has a plain color
view(2) %// view(0,90) %// set view in X-Y plane
colorbar

会给你:
cmapline


作为更一般情况的示例:

x=linspace(0,2*pi);
y=sin(x) ;

xx=[x;x];
yy=[y;y];
zz=zeros(size(xx));

hs=surf(xx,yy,zz,yy,'EdgeColor','interp') %// color binded to "y" values
colormap('hsv')
view(2) %// view(0,90)

将为您提供一个正弦波,其颜色与 y 值相关联:
cmapline2

关于matlab - 根据第三个值更改二维绘图线的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31685078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com