Я пытаюсь вывести несколько оценок плотности ядра на печать на том же графике, и я хочу их ко всем быть различными цветами. У меня есть kludged решение с помощью строки 'rgbcmyk'
и ступая через него для каждого отдельного графика, но я начинаю иметь дубликаты после 7 повторений. Существует ли более легкий/больше эффективный способ сделать это, и с большим количеством параметров цвета?
for n=1:10
source(n).data=normrnd(rand()*100,abs(rand()*50),100,1); %generate random data
end
cstring='rgbcmyk'; % color string
figure
hold on
for n=1:length(source)
[f,x]=ksdensity(source(n).data); % calculate the distribution
plot(x,f,cstring(mod(n,7)+1)) % plot with a different color each time
end
Вы можете использовать цветовую карту, такую как HSV, для создания набора цветов. Например:
cc=hsv(12);
figure;
hold on;
for i=1:12
plot([0 1],[0 i],'color',cc(i,:));
end
MATLAB имеет 13 различных именованных цветовых карт ( 'doc colormap' перечисляет их все).
Другой вариант построения линий разным цветом - использование свойства LineStyleOrder ; см. Defining the Color of Lines for Plotting в документации MATLAB для получения дополнительной информации.
] На самом деле, приличный метод быстрого набора цветов заключается в том, чтобы использовать [], удерживая все; [
] вместо [], удерживая все; [
]. Каждый последующий график []plot[
] будет вращаться (автоматически для Вас) через цветовую карту MATLAB по умолчанию.[
]С сайта MATLAB на [][]удерживайте [
][]:[
] []][
] []удерживайте все[
], удерживая график и текущий цвет и стиль линии так, чтобы последующие команды построения графиков не сбрасывали значения свойств ColorOrder и LineStyleOrder в начало списка. Команды черчения продолжают циклически перебирать предопределенные цвета и стили линий, откуда последний участок остановился в списке.[
Если все векторы имеют равный размер, создайте матрицу и постройте ее.
Каждая колонна нанесена с другим цветом автоматически
Затем вы можете использовать легенду
, чтобы указать столбцы:
data = randn(100, 5);
figure;
plot(data);
legend(cellstr(num2str((1:size(data,2))')))
или, если у вас есть ячейка с именами ядра, используйте
legend(names)