在Matlab 3D网格绘图中使轴穿过原点

在Matlab 3D网格绘图中使轴穿过原点,matlab,axis,mesh,axes,Matlab,Axis,Mesh,Axes,我使用以下代码在Matlab中绘制球体: phi=linspace(0,pi,30); theta=linspace(0,2*pi,30); [phi,theta]=meshgrid(phi,theta); x=sin(phi).*cos(theta); y=sin(phi).*sin(theta); z=cos(phi); figure('Units', 'pixels', ... 'Position', [200 200 433 433]); colormap(copper) mes

我使用以下代码在Matlab中绘制球体:

phi=linspace(0,pi,30);
theta=linspace(0,2*pi,30);
[phi,theta]=meshgrid(phi,theta);

x=sin(phi).*cos(theta);
y=sin(phi).*sin(theta);
z=cos(phi);

figure('Units', 'pixels', ...
 'Position', [200 200 433 433]);

colormap(copper)
mesh(x,y,z,'LineWidth',1.5)

xlabel('k_x','interpreter','tex');
ylabel('k_y','interpreter','tex');
zlabel('k_z','interpreter','tex');

set(gca,...
  'xtick'       , []        , ...
  'ytick'       , []        , ...
  'ztick'       , []        , ... 
  'LineWidth'   , 1.5         );

set(gcf,...
  'Color','w',...
  'PaperPositionMode', 'auto');
如您所见,这只是在白色背景上绘制一个球体,没有刻度,但具有x、y和z轴

现在,我想让这些轴穿过球体的原点。也就是说,我希望轴穿过(0,0,0),而不是像现在一样,在长方体的边缘。另外,如果可能的话,我想把标签放在轴的正端?也许最后还有一支箭。。。但这不是我的主要问题


感觉就像在整个网络上搜索这个简单的问题……

如果您使用的是Matlab R2014a或其任何其他早期版本,John Barber已经有了一个易于使用的工具来实现此功能: