Color a sphere surface/polar plot axis-wise

11 次查看(过去 30 天)
Hi there,
I would like to produce both a sphere and a polar plot whose surface color is defined at each XYZ axis as follows:
Top-bottom (Z) = blue
Left-right (Y) = red
Anterior-posterior (X) = green
The color in the boundaries/interfaces should be an interpolation of them.
Such as here:
and here (for the polar plot):
I have been googling for a while but did not find much help to do it.
Thanks,
Jon
PS: Similar questions seem to have been asked previously with a few variants, but the answers given seem not reproduce the figures pointed above.

回答(1 个)

Mike Garrity
Mike Garrity 2016-5-12
Something like this, perhaps?
[x,y,z] = sphere(40);
col(:,:,1) = abs(y);
col(:,:,2) = abs(x);
col(:,:,3) = abs(z);
surf(x,y,z,col,'FaceColor','interp','EdgeColor','none')
axis equal
camlight
Here's a start on the "polar" one, but I'll let you add the grid & text.
view(2)
axis off
set(gca,'CameraUpVector',[1 0 0])
delete(findobj(gca,'Type','light'))
  1 个评论
Jon Legarreta
Jon Legarreta 2016-5-12
Hi Mike,
thanks for your answer. Helps a lot !
I successfully added the sticks and the text to the sphere using
[X,Y,Z] = cylinder(cylinderRadius, cylinderResolution);
Z(2,:) = -(Z(1,:) + cylinderLength/2);
Z(1,:) = Z(1,:) + cylinderLength/2;
siStick = mesh(X,Y,Z,'FaceColor','b','EdgeColor','none');
yRotAx = [0 1 0]; % rotation around y-axis
rotate(lrStick, xRotAx, angle);
text(siStick.XData(1,1),siStick.YData(1,1),siStick.ZData(1,1) + offset,'S',...
'HorizontalAlignment','left','Color','b','FontSize',textSize);
Although it does not seem the easiest way, I did not find the way to do it thorough simpler transformations/functions.
As for the disc, I am having a hard time trying to mimic the way I set the text for the sphere case, and I am not succeeding.
Did not attempt the grid.
Any hints?
Thanks

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Polar Plots 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by