如何为不同的区间绘制不同颜色的函数?

发布于 2024-12-08 18:00:34 字数 279 浏览 0 评论 0原文

我有一个典型的场景,其中有向量 X 和向量 Y。向量 X 包含递增值,例如 X = [1 1 1 2 2 3 4 4 4 4 4]。向量 Y 包含与 X 大小相同的实值。我希望绘制 索引与 Y 的关系图,其中对应索引的每个不同 X 值的颜色变化。

例如,绘图应将 color1 表示前 3 个值 1,将 color2 表示后 2 个值 2,将 color3 表示 1 个值 3,依此类推。

任何人都可以帮助我吗

I have a typical scenario in which there is a Vector X and Vector Y. Vector X contains increasing values, for example X = [1 1 1 2 2 3 4 4 4 4 4]. Vector Y contains real values of same size as X. Im looking to plot Index Vs Y with color change for each different value of X for the corresponding index.

For example, the plot should have color1 for the first 3 values of 1, color2 for the next 2 values of 2, color3 for 1 value 3 and so on.

Can any one help me

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏天碎花小短裙 2024-12-15 18:00:34

基于劳伦特的回答并实现您的“索引 vs Y”要求,

function color_plot(data_vector, color_vector)
styles={'ro','g.','bx','kd'};
hold off;
for i=unique(color_vector)
    thisIdx=find(color_vector==i);
    thisY=data_vector(color_vector==i);
    thisStyle=styles{mod(i-1,numel(styles))+1}; 
    plot(thisIdx,thisY,thisStyle);
    hold on;
end
hold off;

我的版本还允许任意大的颜色索引;如果您没有定义足够的样式,它只会回绕并重用颜色。

更新注意我必须修复上面计算中的一个符号哦thisStyle

现在测试它

X = [1 1 1 2 2 3 4 4 4 4 4];
Y=rand(size(X))
color_plot(Y,X)

给出

在此处输入图像描述

Building on Laurent's answer and implementing your "Index vs Y" requirement,

function color_plot(data_vector, color_vector)
styles={'ro','g.','bx','kd'};
hold off;
for i=unique(color_vector)
    thisIdx=find(color_vector==i);
    thisY=data_vector(color_vector==i);
    thisStyle=styles{mod(i-1,numel(styles))+1}; 
    plot(thisIdx,thisY,thisStyle);
    hold on;
end
hold off;

My version also allows arbitrarily large color indices; if you don't have enough styles defined, it just wraps back around and reuses colors.

Update note I had to fix a sign above in the calculation oh thisStyle.

Testing it with

X = [1 1 1 2 2 3 4 4 4 4 4];
Y=rand(size(X))
color_plot(Y,X)

now gives

enter image description here

樱花坊 2024-12-15 18:00:34

plot() 函数选项会更好(也许它存在)。

这是执行此操作的解决方法函数:

function colorPlot( data_vector, colors_vector)
%PLOTCOL plots data_vector with colors found in colors_vector

Styles=[{'r-'} {'g-'} {'b-'} {'k-'}];


last_off=0;
last_data=0;
for i=unique(colors_vector)
    data_segment=data_vector(colors_vector==i);
    len=length(data_segment);
    if last_off==0
        hold off;
        plot( data_segment, 1:len,char(Styles(i)));
        last_off=len;
    else
        plot([last_data data_segment],last_off:last_off+len,char(Styles(i)));
        last_off=last_off+len;
    end
    last_data=data_segment(len);
    hold on;
end
hold off;
end

这样调用它:

colorPlot(Y,X);

A plot() function option would be better (and maybe it exists).

Here's a workaround function to do this:

function colorPlot( data_vector, colors_vector)
%PLOTCOL plots data_vector with colors found in colors_vector

Styles=[{'r-'} {'g-'} {'b-'} {'k-'}];


last_off=0;
last_data=0;
for i=unique(colors_vector)
    data_segment=data_vector(colors_vector==i);
    len=length(data_segment);
    if last_off==0
        hold off;
        plot( data_segment, 1:len,char(Styles(i)));
        last_off=len;
    else
        plot([last_data data_segment],last_off:last_off+len,char(Styles(i)));
        last_off=last_off+len;
    end
    last_data=data_segment(len);
    hold on;
end
hold off;
end

Call it this way :

colorPlot(Y,X);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文