Как я могу указать что-то вроде: если значение на графике <10, раскрасьте его в красный цвет, если оно> 20, раскрасьте его в синий цвет, если оно находится между ними, раскрасьте его в черный цвет?

0
Trup 8 Мар 2012 в 23:18

3 ответа

Лучший ответ

Простой пример:

x=1:0.1:30;
y=x;

hold on
plot(x(y<10), y(y<10),'o','color','red');
plot(x(y>20),y(y>20),'o','color','blue');

Y (y <10) - это логическая индексация, и ключ к этому.

3
Chris 8 Мар 2012 в 19:35

Следующее будет работать, если вы рисуете поверхности.

set(gca, 'CLim', [0 30])
set(gcf, 'Colormap', [1 0 0; 0 0 0; 0 0 1])
0
Nzbuu 8 Мар 2012 в 20:33

Если вы рисуете линию, я бы рекомендовал использовать color_line из MATLAB Central. Вам все равно нужно будет установить требуемую цветовую карту, но, используя этот метод, вы рисуете одну линию, окрашенную в соответствии со значением.

Единственный недостаток использования логической индексации для разделения данных заключается в том, что при построении графика они рассматриваются как отдельные блоки данных. Многие инструменты построения графиков будут работать только с одним набором данных, поместите легенду, и вы получите по одному элементу для каждого набора данных.

С color_line это будут разные цвета, но они будут обрабатываться как один элемент данных.

0
Adrian 9 Мар 2012 в 11:53