Как получить хорошее разделение цветов для нескольких следов сюжета Matlab? - PullRequest
0 голосов
/ 25 мая 2019

Мне нужно очень четкое разделение между несколькими трассами plot ().несколько означает, возможно, 2 или 3 или 5 временных историй или графики XY.

призма хороша с 7 отчетливо отдельными цветами, но ее желтый едва виден на белом фоне по умолчанию.

Вот примерс цветами по умолчанию.Они довольно красивые, но все же несколько приглушенные пастели.Я бы предпочел более яркие цвета, чем по умолчанию:

figure(1)
clf
x=1:100;
for i = 1:7
  y=i*log(x);  
  plot(x,y, 'Linewidth', 5);
  legendStr{i}=sprintf('line %i',i);
  hold on
end
grid on
legend(legendStr,'location','best')

как я могу использовать призму или другую цветовую карту без ярко-желтого цвета?Есть ли лучший подход для построения нескольких отдельных трасс на одном и том же рисунке с действительно четким разделением цветов?

enter image description here

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Палитра prism имеет 6 уникальных цветов, а не 7. cm=prism(6) возвращает эти 6 цветов.Третий - желтый, мы можем удалить его с помощью cm(3,:)=[].

Теперь мы можем установить порядок цвета по умолчанию для графиков, используя свойство ColorOrder объекта оси (см. здесь ):

cm = prism(6);
cm(3,:) = [];
set(gca,'ColorOrder',cm);

Теперь при построении графика для этого объекта осей эти 5 цветов будут циклически проходить (не забудьте установить hold on, чтобы свойства осей не сбрасывались).

Чтобы изменить цвета для всех последующих графиков в текущем сеансе MATLAB, измените порядок цветов по умолчанию:

set(groot,'defaultAxesColorOrder',cm)
0 голосов
/ 25 мая 2019

Используйте colormap и rgb

rgb означает Красный Зеленый Синий , просто установите, сколько процентов (пропорций) вы хотите, чтобы каждый из этих основных цветов в вашем окончательный смешанный цвет

rgb = [0 0 0] ---> 0%Red + 0%Green + 0%Blue = Black
rgb = [1 0 0] ---> 100%Red + 0%Green + 0%Blue = Red

Я использую шкалу [0, 1], здесь 1 means 100% и 0 means 0%, вы можете установить любое значение в диапазоне 0 and 1 Код следующий

% Set the color you want using rgb
map = [0 0 0         %---> 1st color 
       1 0 0         %---> 2nd color
       0 1 0         %---> 3rd color
       0 0 1         %---> 4th color
       1 0.5 1       %---> 5th color
       0.2 0.5 0.75  %---> 6th color
       0.5 0.3 0.8]; %---> 7th color

x=1:100;
y = zeros(100, 7);
plt = zeros(1,7);
for i = 1:7
  y(:,i)=i*log(x);  
   % For each iteration use different map color, like map(1, :)-->[0 0 0]
   plt(i) = plot(x,y(:, i), 'Color',colormap(map(i, :)), 'Linewidth', 5);
   hold on

end

legend(plt,{'1st Color','2nd Color', '3rd Color', '4th Color', ...
    '5th Color', '6th Color', '7th Color'});
set(gca,'FontSize',20)
xlabel('x-axis','color', 'red', 'fontSize', 25)

ylabel('y-axis', 'color','red', 'fontSize', 25)

График

enter image description here

...