改变Matlab绘图中的线特性

改变Matlab绘图中的线特性,matlab,plot,Matlab,Plot,我一直试图在for循环中调用时改变Matlab中的行属性。自动系统如ColorOrder和LineStyleOrder已被证明是无用的,因为它们不会同时索引。我需要更改每行的颜色和标记/线条样式。我找到的最佳解决方案是: hold on; col = hsv(5); mar = ['d','o','s','^','v','<','>']; beta = [1,2,3,4,5]; for m = 1:length(beta) b = beta(m); y=[];

我一直试图在for循环中调用时改变Matlab中的行属性。自动系统如
ColorOrder
LineStyleOrder
已被证明是无用的,因为它们不会同时索引。我需要更改每行的颜色和标记/线条样式。我找到的最佳解决方案是:

hold on;
col = hsv(5);
mar = ['d','o','s','^','v','<','>'];
beta = [1,2,3,4,5];

for m = 1:length(beta)
    b = beta(m);
    y=[];
    s = 0:05:8;
    for m = s
        y = [y integral(@(f)fun(m,b,f),0.0001,1000)];
    end
    plot(s,y./y(1),'Marker',mar(m),'color',col(m,:),'DisplayName',num2str(b))
    legend('-DynamicLegend'); %automatically generate legend
end
hold off;
等一下;
col=hsv(5);
mar=[d'、'o'、's'、'^'、'v'、'';
β=[1,2,3,4,5];
对于m=1:长度(β)
b=β(m);
y=[];
s=0:05:8;
对于m=s
y=[y积分(@(f)fun(m,b,f),0.00011000)];
结束
绘图(s,y./y(1),“标记”,mar(m),“颜色”,col(m,:),“显示名称”,num2str(b))
图例('-DynamicLegend');%自动生成图例
结束
拖延;

我被迫在beta的长度上循环,而不是beta本身,以便有一个颜色和标记的迭代器。然而,尽管这与文档中描述的完全相同,但颜色和标记都没有改变。我怀疑有一些奇怪的互动正在进行,但我不知道它是什么。有人知道为什么这不会导致不同线条的不同颜色和标记吗?

我在某个地方读到,在早期版本的Matlab中,我们无法在调用
绘图时同时更改这两个属性。
…我希望我有参考。我用的是R2013a,它无论如何都不起作用

作为一种变通方法,可以将句柄指定给各个打印,并在打印完成后同时更改这两个属性

换言之,请使用以下内容:

hPlot = plot(...)
set(hPlot,'Marker',...,'Color',...,'LineStyle',...)
对于您的代码,它将如下所示:

clear
clc
close all

hold on;
col = hsv(5);
mar = {'d','o','s','^','v'};
%// ======== NEW ========\\%
linestyles = {'-' '--' ':' '-.' '-'}
beta = [1,2,3,4,5];

%// Dummy function
fun = @(x,y,z) x.*y-z;

for m = 1:length(beta)
    b = beta(m);
    y=[];
    s = 0:05:8;
    for m = s
        y = [y integral(@(f)fun(m,b,f),0.0001,1000)];
    end
    %// ======== NEW ========\\%
    hPlot(b) = plot(s,y./y(1));

    set(hPlot(b),'Marker',mar{b},'color',col(b,:),'LineStyle',linestyles{b},'DisplayName',num2str(b))

    legend('-DynamicLegend'); %automatically generate legend
end
hold off;
具有以下输出: