Matlab中的色条轴刻度
我正在使用下面的代码Matlab中的色条轴刻度,matlab,plot,colors,matlab-figure,Matlab,Plot,Colors,Matlab Figure,我正在使用下面的代码 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','Manufacturin
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')
得出这个数字
我有两个简短的问题:
对于第一个问题,您只需修改:
caxis([0.5 12.5]);
我不确定是否理解你的第二个问题,但我要说的是,没有简单的方法。拉特伯特几乎回答了第一个问题。但是,为了完整起见,只需执行此操作并替换当前的
caxis
调用:
caxis([0.5 12.5]);
回答第二个问题,是的,你可以
如果您在代码中注意到,您从jet
主题生成了12个组件的彩色地图。这将生成一个12 x 3的矩阵,其中每一行都是唯一的颜色。因此,如果您想手动选择颜色,只需重新排列颜色的顺序即可。如果您查看绘图中的颜色栏标签,第一种颜色从底部或蓝色开始,然后进入顶部或红色
作为参考,这是由jet(12)
生成的矩阵:
每行包含一个唯一的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,:);
您所要做的就是更改顺序
,以便获得正确的颜色以正确的顺序显示。因此,请参考图像中的颜色栏,并对每种颜色的位置进行排列,使其符合顺序的相同位置。例如,如果您想反转颜色顺序,您可以执行以下操作:
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元组,并放在一行中。不过,你必须看一看颜色选择器,才能知道每个组件应该加权多少,以获得正确的颜色
点击此处:-您可以选择所需的确切颜色并记录RGB值。之后,将每个值除以255,并将其作为一个条目放入颜色贴图矩阵中。每种颜色都是一行,第一列为红色,第二列为绿色,第三列为蓝色。这是如果你真的想控制什么颜色适合什么类别。您必须立即确定红色、绿色和蓝色值的正确组合
祝你好运 这并不完全是我对“手动选择颜色”的理解。你的解决方案——顺便说一句,它是完全正确和有趣的——更多的是关于“计算上重新排列”颜色。不过,我可能错了,如果OP对你的解决方案感到满意,我就没什么可说的了@拉特伯特——这当然是真的。我就是这么解释的。让我看看OP对此有何评论。。。谢谢你的评论:)如果能准确地选择颜色就好了。但我对提供的解决方案感到满意。谢谢你们两位的帮助!你可以做到。你只需要知道你想要什么颜色,然后把它们放到矩阵中。请记住,每种颜色都是一个RGB元组,并放在一行中。不过,你必须看一看颜色选择器,才能知道每个组件应该加权多少,以获得正确的颜色。谢谢你的接受@volcompt-关于我的评论,请点击此处:-您可以选择所需的确切颜色并记录RGB值。之后,将每个值除以255,并将其作为一个条目放入颜色贴图矩阵中。每种颜色都是一行,第一列为红色,第二列为绿色,第三列为蓝色。这是如果你真的想控制什么颜色适合什么类别。您必须立即确定红色、绿色和蓝色值的正确组合。祝你好运
%// 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')