拉伯特几乎回答了第一个问题。但是,为了完整起见,只需执行此操作并替换当前的caxis
call:
caxis([0.5 12.5]);
回答第二个问题,是的,可以。
如果您在代码中注意到,您生成了由 12 个分量组成的颜色图jet
主题。这会产生一个 12 x 3 矩阵,其中每个row是一种独特的颜色。因此,如果您想手动选择颜色,您只需重新排列颜色的顺序。如果您查看绘图中的颜色条标签,第一种颜色从底部或蓝色开始,然后依次进行到顶部,或红色。
作为参考,这是由以下方式生成的矩阵jet(12)
:
>> cmap = jet(12)
cmap =
0 0 0.6667
0 0 1.0000
0 0.3333 1.0000
0 0.6667 1.0000
0 1.0000 1.0000
0.3333 1.0000 0.6667
0.6667 1.0000 0.3333
1.0000 1.0000 0
1.0000 0.6667 0
1.0000 0.3333 0
1.0000 0 0
0.6667 0 0
每行包含一个唯一的 RGB 元组,其中第一列表示红色的量,第二列表示绿色的量,第三列表示蓝色的量。因此,前几种颜色是纯蓝色,然后在该点之后逐渐添加绿色阴影,使其成为青色,依此类推。
矩阵的排列使得第一种颜色是第一行,最后一种颜色是最后一行。如果您想决定哪个标签需要哪种颜色,您只需改编行,以便它与您想要的任何标签匹配。
因此,您有一组标签:
labels = {'Non-Durables','Durables','Manufacturing','Oil, Gas and Coal ','Chemicals','Technology','Telephone & TV','Utilities','Wholesale and Retail','Health','Finance','Other'};
...目前,您已经确定了颜色在颜色图中的显示顺序:
cmap = jet(12);
order = [1 2 3 4 5 6 7 8 9 10 11 12]; %// or order = 1:12;
cmap = cmap(order,:);
你所要做的就是改变order
以便您获得正确的颜色以正确的顺序出现。因此,请参考图像中的颜色条,并安排每种颜色的位置,使其与图像中的颜色条的位置一致。order
。例如,如果您想要reverse颜色排序,你可以这样做:
cmap = jet(12);
order = [12 11 10 9 8 7 6 5 4 3 2 1]; %// or order = 12:-1:1;
cmap = cmap(order,:);
同样,如果您希望黄色和青色先出现,其余颜色随后出现,您可以这样做:
cmap = jet(12);
order = [8 4 5 6 7 1 2 3 9 10 11 12];
cmap = cmap(order,:);
一旦你这样做了,你就打电话colormap
on cmap
并继续你的情节:
%// From before
cmap = jet(12);
order = [4 5 6 8 7 1 2 3 9 10 11 12];
cmap = cmap(order,:);
%// New
colormap(cmap);
hold on
plot(n, d3,'b-');
scatter(n, d3, [], RiskierInd, 'filled');
caxis([0.5 12.5]); %// Change
colorbar('YTick',[1:12],...
'YTickLabels',{'Non-Durables','Durables','Manufacturing','Oil, Gas and Coal ','Chemicals','Technology','Telephone & TV','Utilities','Wholesale and Retail','Health','Finance','Other'})
datetick('x','mm-yyyy')
但是,如果您想自己手动选择颜色,那就会更复杂一些。您只需要知道您想要什么颜色,然后将它们放入矩阵中即可。请记住,每种颜色都是一个 RGB 元组,并且放置在一行中。不过,您必须查看颜色选择器才能知道每个组件应该加权以获得正确的颜色。
到这里:http://colorpicker.com http://colorpicker.com- 您可以选择您想要的确切颜色并记录 RGB 值。之后,将每个值除以 255 并将其作为条目放入颜色图矩阵中。每种颜色都是一行,其中第一列是红色,第二列是绿色,第三列是蓝色。如果您确实想控制什么颜色与什么类别相匹配,则可以这样做。您必须立即确定红色、绿色和蓝色值的正确组合。
祝你好运!