2014-10-14 4 views
0

у меня есть вектор целых чисел, которые изменяются от 1 до 4.участок элементов массива с разными цветами

A=[1 2 3 4 2 3 2 1 2 3 4 4] 

Я хотел бы построить А с различными цветами для каждого значения ... вертикальной линия, ссылки A (1) - A (2) должны иметь цвет первого значения (в данном случае 1).

Возможно ли это?

и как обрабатывать случай NaN, присутствующего в векторе? я Постройте против вектора времени

A = [1 1 1 NaN 4 4 4 Nan 2 2 3 3]; 
time = [1 2 3 4 5 6 7 8 9 10 11 12]; 

ответ

2

Предположим, у вас есть следующий набор цветов:

col = hsv(4); 

Вы задаете порядок цветов на основе стоимости эс А:

figure(); 
set(gca, 'ColorOrder', col(A,:), 'NextPlot', 'replacechildren'); 

Затем вы можете построить каждую строку в желаемый цвет:

n = numel(A); 
plot(hankel(0:1,1:n-1),hankel(A(1:2),A(2:n))) 

Это приводит к:


Edit: hankel - это похоже на стрельбу с базукой, чтобы убить москита, как мы говорим в Нидерландах. Во всяком случае, я узнал об этом несколько вопросов назад, поэтому мне понравилось это использовать. См. Пост Дэн для более простой альтернативы для построения графика. Тем не менее, установка правильных цветов может быть выполнена, как указано выше.

+0

Комбинация двух, вероятно, лучше всего. Вы не используете 'hankel', чтобы правильно установить цвета, это сделано раньше, поэтому вы можете просто вызвать' set (gca, 'ColorOrder', col (A, :), 'NextPlot', 'replacechildren'); 'и затем все еще используйте мой «plot (x, y)» и пропустите «hankel», но все равно получите то, что вы называете правильными цветами. – Dan

+0

В приведенной картинке рисунка последняя прямая линия (справа) не включена. Но я могу заверить вас, это действительно так;) – MeMyselfAndI

+0

спасибо! Я отредактировал вопрос, потому что у меня возникла ошибка с этим тестовым случаем. – gabboshow

1

Вы можете сделать это, используя только прикосновение обмане:

A=[1 2 3 4 2 3 2 1 2 3 4 4] 

x = [1:numel(A)-1; 2:numel(A)]; 
y = A(x); 

plot(x,y) 

enter image description here

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