我有一个scatter3图,其中我使用向量C来定义不同点的颜色。在这里,色彩映射表的颜色被线性地映射到C中的数字上。我想以某种方式找到C向量中每个值的RGB值。所以我想从我的C向量中得到一个x乘以3的矩阵。有没有人知道这是否可能?
祝你好运,阿奇姆
编辑:多亏了@Aabaz,我才能解决这个问题。以下是我的解决方案:
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这不是最优雅的方式,但似乎很管用。
发布于 2011-09-02 21:11:21
不带参数的函数colormap将当前轴的颜色映射作为存储每种颜色的RGB代码的m x 3矩阵返回。从那里可以得到向量C中每个元素的RGB代码。
更新:我很抱歉,我一定是误解了你的问题,因为我不明白你是在寻找一种明确的方法来获取rgb代码,只是色彩映射和rgb代码之间的联系。无论如何,我看到你自己找到了解决方案,干得好。我在这里给你做了一个快速的尝试:
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如何插值颜色贴图的索引。您可以针对自己的解决方案对其进行测试,以查看结果是否匹配。
https://stackoverflow.com/questions/7283742
复制相似问题