And*_*uri 7 matlab plot colors
假设以下情况:
hold on
plot(rand(1,20));
plot(rand(1,10));
plot(rand(1,20));
Run Code Online (Sandbox Code Playgroud)
MATLAB将绘制3条线,每条线都有一个默认颜色(例如红色,蓝色,黄色).
现在,由于第二个图更短,我想做以下事情:
hold on
plot(rand(1,20));
pl=plot(rand(1,10));
plot(11:20,rand(1,10),'color',get(pl,'color') ...
,'LineStyle','--');
plot(rand(1,20));
Run Code Online (Sandbox Code Playgroud)
然而,虽然第3个图确实具有第二个图的颜色,但第4个图具有第4个默认颜色,而不是第3个.似乎MATLAB将更新下一个默认颜色顺序的索引,无论它是否正在使用它.
虽然我知道我可以做get(groot,'DefaultAxesColorOrder')所有默认颜色然后将每个绘图属性设置为我想要的索引,但我想知道是否有一种方法告诉MATLAB "嘿,对于下一个绘图,不要更新那个默认颜色索引"
当您在轴上绘制时,未记录的轴变量用于控制使用颜色顺序中的值,我没有对它们进行太多探索,因此您需要更深入地探索才能完全理解它们的工作原理 - 但是本质上它们是:
ax = axes();
ax.ColorOrderIndex_I
ax.ColorOrderMode
Run Code Online (Sandbox Code Playgroud)
ColorOrderIndex_I更新您的示例(和一些数据 - 因为我发现它更容易查看) - 您可以在绘制“两条线连为一体”后从其中删除一个:
v1 = ones(20,1);
v2 = v1(1:10)+1;
v3 = v1+2;
figure;
ax = subplot ( 2, 1, 1 )
hold on
plot(v1);
plot(v2);
plot(v3);
ax = subplot ( 2, 1, 2 );
hold on
plot(v1);
pl=plot(v2);
plot(11:20,v2,'color',get(pl,'color') ,'LineStyle','--');
ax.ColorOrderIndex_I = ax.ColorOrderIndex_I-1;
plot(v3);
Run Code Online (Sandbox Code Playgroud)
注意:使用未记录的功能 - 经过 r2015b 测试。