0

我需要在几个 plot() 轨迹之间进行非常明显的分离。几个可能意味着 2 或 3 或 5 个时间历史轨迹或 XY 图。

prism 有 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')

如何在没有亮黄色的情况下使用棱镜或其他颜色图?有没有更好的方法在同一个图中绘制几个单独的轨迹,并且颜色分离非常清晰?

在此处输入图像描述

4

2 回答 2

1

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)
于 2019-05-27T21:44:15.157 回答
0

使用colormaprgb

rgb代表Red Green Blue,只需设置您希望 最终混合颜色中每种主要颜色的百分比(比例)

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)

图形

在此处输入图像描述

于 2019-05-25T06:23:08.867 回答