How can I get RGB color of a surface?
4 次查看(过去 30 天)
显示 更早的评论
How can I retrieve the displayed RGB color value of a surface? The following code draws a "line" colored to indicating a chosen value. In fact the line is really a surface, but it has a constant color as long as the caxis and colormap aren't changed. How do I retrieve this RGB color value, which is green in the example below? (My motivation is to use this RGB color for a text label).
figure;
x = 1:20;
y = sin(x*pi/8);
vr = 200*ones(size(x)); % This value is used to assign the surface's color
% Unlike typical surfaces, the height doesn't vary
z = zeros(size(x));
% Make a very skinny surface that looks like a line
h = surface([x;x],[y;y],[z;z],[vr;vr],'facecolor','none',...
'edgecolor','flat','linewidth',1) ;
colormap(jet); % This affects the color of the surface
caxis([0 400]); % This also affects the color of the surface
colorbar;
% h is a surface (matlab.graphics.primitive.Surface)
get(h, 'color'); % Can't get the color of a surface so this fails here
The plot below shows that the surface appears as a green "line", and I'd like to retrieve the green color.
0 个评论
采纳的回答
Image Analyst
2017-8-4
编辑:Image Analyst
2017-8-4
I don't know what h is, since I didn't write that File Exchange code. Is h a 2-d matrix? If so, can't you just use the value of h as an index for your colormap, jet, to get the color for a particular height?
5 个评论
Image Analyst
2017-8-4
Well I can't see any surface, so I assume you have some surface where the color of the surface depends on the height of the surface, like this gives you:
[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
C = X.*Y;
surf(X,Y,Z,C)
colorbar
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Colormaps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!