ColorOrder设置无效

时间:2016-06-14 10:19:01

标签: matlab plot matlab-figure

我正在使用Matlab版本R2014a,我试图让plot看起来像Simulink范围。我的代码可以正常工作,但ColorOrder设置不会反映在输出中。

设置ColorOrder后,我使用current_co=get(gca, 'ColorOrder');检索它,然后返回我设置的值。但是在图中使用了默认颜色。

这是为什么?如何解决?

my_co=[1.0 1.0 0.0; 1.0 0.0 1.0; 0.0 1.0 1.0; 1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0; 1.0 1.0 1.0];
figure('Color', [0.2 0.2 0.2]);
plot(ScopeData(:,2:6));
legend('w(t)','e(t)','y(t)','x(t)','z(t)');
set(gca, 'ColorOrder', my_co);
set(gca, 'Color', 'black');
set(gca, 'XColor', 'white');
set(gca, 'YColor', 'white');
set(gca, 'XGrid', 'on');
set(gca, 'YGrid', 'on');
title('My funky title!', 'Color', 'white');
xlabel('t/[s]');

1 个答案:

答案 0 :(得分:1)

您必须在绘制任何内容之前设置ColorOrder属性。绘图对象在创建ColorOrder属性时遵循当前值,并且在创建之后更改ColorOrder 仅对未来产生影响地块。 另请注意,您需要在绘制任何内容之前致电hold on,以防止axes返回默认ColorOrder

my_co = [1 1 0; 1 0 1; 0 1 1; 1 0 0; 0 1 0; 0 0 1; 1 1 1];
figure('Color', [0.2 0.2 0.2]);

% Set this before plotting anything
set(gca, 'ColorOrder', my_co);
hold on

% NOW plot your data
plot(ScopeData(:,2:6));
legend('w(t)','e(t)','y(t)','x(t)','z(t)');
set(gca, 'ColorOrder', my_co);
set(gca, 'Color', 'black');
set(gca, 'XColor', 'white');
set(gca, 'YColor', 'white');
set(gca, 'XGrid', 'on');
set(gca, 'YGrid', 'on');
title('My funky title!', 'Color', 'white');
xlabel('t/[s]');

% If you want you can turn hold off now
hold off

这是有道理的,因为如果使用自定义颜色创建绘图:

plot(data, 'Color', 'magenta')

ColorOrder属性发生变化时,您不希望轴自动更改此手动颜色。

enter image description here