2016-06-14 2 views
1

Я использую версию Matlab R2014a, и я стараюсь, чтобы plot выглядел как область Simulink. Мой код работает так, как следует, но параметр ColorOrder не отображается на выходе.Настройка 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]'); 
+2

Что вы имеете в виду? Я получаю сюжет с цветами, которые определенно не являются дефолтом. Черный фон, белая ось. Я получаю это: https://imgur.com/MO3V5jC, но ther eis ane rror saving, поэтому белые черные и ось видна. –

+0

@AnderBiguri huh, я не понимаю. Моя выглядит так: [http://imgur.com/Yj2y3Qy](http://imgur.com/Yj2y3Qy). Возможно, мне придется использовать «plot (x, y1, color1, x, y2, color2, ...)», который ** делает ** чтить цвета. – ptmartin

+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

Смежные вопросы