我正在使用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]');
答案 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
属性发生变化时,您不希望轴自动更改此手动颜色。