Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中的色条轴刻度_Matlab_Plot_Colors_Matlab Figure - Fatal编程技术网

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