How can I get RGB color of a surface?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Image Analyst
il 4 Ago 2017
Modificato: Image Analyst
il 4 Ago 2017
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 Commenti
Image Analyst
il 4 Ago 2017
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

Più risposte (0)
Vedere anche
Categorie
Scopri di più su Surface and Mesh Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!