【发布时间】:2019-08-19 17:54:22
【问题描述】:
我想将任意数字0<=f<=1 转换为由四个类别green, yellow, orange and red 给出的rbg 代码。我可以通过以下功能实现:
function [rgb,myColor]=colorCode(f)
cm = [0 1 0;1 1 0;255/255 153/255 51/255;1 0 0];
colorID = max(1, sum(f > [0:1/length(cm(:,1)):1]));
myColor = cm(colorID, :);
rgb = uint8(myColor*255+0.5);
现在,我想对此进行 2 项改进:
1.- 上面的代码将区间[0,1]分成四等份,即:
[0,0.25]>green
[0.25,0.5]>yellow
[0.5,0.75]>orange
[0.75,1]>red
但我想定义自定义间隔,例如:
[0,0.3]>green
[0.3,0.5]>yellow
[0.5,0.7]>orange
[0.7,1]>red
2.- 我希望颜色间隔之间的过渡更平滑。现在,介于 0.25 和 0.26 之间的颜色突然从绿色变为黄色。这个想法是从绿色到绿黄色到黄绿色到黄色,其他过渡类似。我现在必须向 cm 颜色图矩阵添加更多行,但我不知道如何....
【问题讨论】:
-
可能相关:Control colorbar scale in MATLAB 也链接到非常相关的帖子。
-
您可以使用this answer(参见奖励部分)和
interp1函数创建自定义颜色图。我知道这不是您问题的完整答案。 -
如果这只是一次性的工作并且您不想以编程方式进行,您可以尝试this
-
谢谢,在你们的 cmets 之间我可以让它工作。我会发布解决方案