Colorbar - Matlab中的轴刻度

时间:2015-05-17 16:47:34

标签: matlab plot colors matlab-figure

我正在使用以下代码

PropertyGroup

产生这个数字

enter image description here

我有两个简单的问题:

  1. 是否可以将每种颜色的颜色条字符串条目居中?例如,条目“Non-Durables”不应位于颜色条的底部,而应位于最暗的蓝色类别的中间。

  2. 是否可以手动选择每个类别的颜色?

2 个答案:

答案 0 :(得分:1)

关于第一个问题,您只需修改:

caxis([0.5 12.5]);

我不确定你理解你的第二个问题,但我会说没有简单的方法。

答案 1 :(得分:1)

Ratbert几乎回答了第一个问题。但是,为了完整起见,只需执行此操作并替换当前的caxis电话:

caxis([0.5 12.5]);

要回答第二个问题,是的,你可以。

如果您在代码中注意到,您生成了jet主题中12个组件的颜色映射。这会生成一个12 x 3矩阵,其中每个都是唯一的颜色。因此,如果您想手动选择颜色,只需重新排列颜色的顺序即可。如果您查看绘图中的颜色条标签,第一种颜色从底部开始,或蓝色,并且进展到顶部,或红色。

作为参考,这是由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的相同位置。例如,如果您想反转颜色排序,您可以这样做:

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上致电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://jsbin.com/kulihi/8/watch?html,js,output - 您可以选择所需的确切颜色并记录RGB值。之后,将每个值除以255,并将其作为颜色映射矩阵中的条目。每种颜色都是一行,第一列是红色,第二列是绿色,第三列是蓝色。如果您真的想要控制什么颜色与哪个类别相关。您必须直接确定红色,绿色和蓝色值的正确组合。

祝你好运!