首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自colorvector的Colormatrix

来自colorvector的Colormatrix
EN

Stack Overflow用户
提问于 2011-09-02 20:58:11
回答 1查看 203关注 0票数 3

我有一个scatter3图,其中我使用向量C来定义不同点的颜色。在这里,色彩映射表的颜色被线性地映射到C中的数字上。我想以某种方式找到C向量中每个值的RGB值。所以我想从我的C向量中得到一个x乘以3的矩阵。有没有人知道这是否可能?

祝你好运,阿奇姆

编辑:多亏了@Aabaz,我才能解决这个问题。以下是我的解决方案:

代码语言:javascript
复制
colors_current = colormap;
color = [color zeros(length(color),2)];
stepw = floor(length(color)/length(colors_current));
colorsort = sortrows(color);
color_old = 0;
counter = 1;

for i = stepw:stepw:length(JAbs)
    color_indices = find(color_old < color(:,1) & color(:,1) < color_sort(i));
    if counter >= length(colors_current) 
        break;
    end
    for j=1:length(color_indices)
        JAbs(color_indices(j),:) = colors_current(counter,:);
    end
    color_old = colorsort(i);
    counter = counter + 1;
end

这不是最优雅的方式,但似乎很管用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-02 21:11:21

不带参数的函数colormap将当前轴的颜色映射作为存储每种颜色的RGB代码的m x 3矩阵返回。从那里可以得到向量C中每个元素的RGB代码。

更新:我很抱歉,我一定是误解了你的问题,因为我不明白你是在寻找一种明确的方法来获取rgb代码,只是色彩映射和rgb代码之间的联系。无论如何,我看到你自己找到了解决方案,干得好。我在这里给你做了一个快速的尝试:

代码语言:javascript
复制
n=10;
C=rand(n,1);
map=colormap(jet);
Cregspaced=(min(C):(max(C)-min(C))/(size(map,1)-1):max(C))';
Cmapindex=interp1(Cregspaced,(1:size(map,1))',C,'nearest');
Crgb=map(Cmapindex,:);

这应该会起作用,这取决于Matlab如何插值颜色贴图的索引。您可以针对自己的解决方案对其进行测试,以查看结果是否匹配。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7283742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档