Автоматически постройте различные цветные графики

Я пытаюсь вывести несколько оценок плотности ядра на печать на том же графике, и я хочу их ко всем быть различными цветами. У меня есть 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
109
задан chappjc 28 February 2014 в 02:04
поделиться

3 ответа

Вы можете использовать цветовую карту, такую ​​как 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 для получения дополнительной информации.

130
ответ дан 24 November 2019 в 03:19
поделиться
[

] На самом деле, приличный метод быстрого набора цветов заключается в том, чтобы использовать [], удерживая все; [] вместо [], удерживая все; []. Каждый последующий график []plot[] будет вращаться (автоматически для Вас) через цветовую карту MATLAB по умолчанию.[

] [

]С сайта MATLAB на [][]удерживайте [][]:[

] [
] [

][]удерживайте все[], удерживая график и текущий цвет и стиль линии так, чтобы последующие команды построения графиков не сбрасывали значения свойств ColorOrder и LineStyleOrder в начало списка. Команды черчения продолжают циклически перебирать предопределенные цвета и стили линий, откуда последний участок остановился в списке.[

] [
]
106
ответ дан 24 November 2019 в 03:19
поделиться

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

data = randn(100, 5);

figure;
plot(data);

legend(cellstr(num2str((1:size(data,2))')))

или, если у вас есть ячейка с именами ядра, используйте

legend(names)
4
ответ дан 24 November 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: