gpt4 book ai didi

matlab - Colorbar - Matlab 中的轴刻度

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:06 30 4
gpt4 key购买 nike

我正在使用下面的代码

d3 = vals;
n = datesmonth;
figure
plot(n,d3);
colormap(jet(12));
hold on
plot(n, d3,'b-');
scatter(n, d3, [], RiskierInd, 'filled');
caxis([1 12]);
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')

产生这个数字

enter image description here

我有两个简单的问题:

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

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

最佳答案

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

caxis([0.5 12.5]);

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

如果您在代码中注意到,您从 jet 主题中生成了一个包含 12 个组件的彩色 map 。这会生成一个 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 的相同位置。例如,如果您想反转颜色顺序,您可以这样做:

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,:);

完成此操作后,您可以在 cmap 上调用 colormap 并继续您的绘图:

%// 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 - 您可以选择您想要的确切颜色并记录 RGB 值。之后,将每个值除以 255,并将其作为一个条目放入颜色映射矩阵中。每种颜色都是一行,其中第一列是红色,第二列是绿色,第三列是蓝色。这是如果你真的想控制什么颜色与什么类别。您必须立即确定红色、绿色和蓝色值的正确组合。

祝你好运!

关于matlab - Colorbar - Matlab 中的轴刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30289443/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com