Опираясь на Ответ Лорана и реализуя ваше требование " Index против Y ",
function color_plot(data_vector, color_vector)
styles={'ro','g.','bx','kd'};
hold off;
for i=unique(color_vector)
thisIdx=find(color_vector==i);
thisY=data_vector(color_vector==i);
thisStyle=styles{mod(i-1,numel(styles))+1};
plot(thisIdx,thisY,thisStyle);
hold on;
end
hold off;
Моя версия также допускает произвольно большие цветовые индексы; если у вас недостаточно определенных стилей, он просто оборачивается и повторно использует цвета.
Обновление примечание Мне пришлось исправить знак выше в расчете о thisStyle
.
Тестирование с помощью
X = [1 1 1 2 2 3 4 4 4 4 4];
Y=rand(size(X))
color_plot(Y,X)
теперь дает