MATLAB中的不同轴位置

MATLAB中的不同轴位置,matlab,3d,plot,axes,Matlab,3d,Plot,Axes,我目前正在尝试在Matlab图形中移动轴的位置。我想实现类似的功能(在gnuplot中完成): 我根本不知道这是否可行,也不知道在哪里可以找到答案,所以我非常感谢您的帮助。嗯 那么让我们来描绘: x = zeros(1,21); y = -10:10; z = y/2; figure; plot3(x,y,z); % a line from (0,-10,-5) to (0,10,5) similar to the example 一个问题是matlab不会自动绘制坐标轴,如图所示。 这里

我目前正在尝试在Matlab图形中移动轴的位置。我想实现类似的功能(在gnuplot中完成):

我根本不知道这是否可行,也不知道在哪里可以找到答案,所以我非常感谢您的帮助。

那么让我们来描绘:

x = zeros(1,21); y = -10:10; z = y/2;
figure; plot3(x,y,z); % a line from (0,-10,-5) to (0,10,5) similar to the example

一个问题是matlab不会自动绘制坐标轴,如图所示。 这里讨论了这一点:

要绘制这些图形(在3D中),廉价的解决方案是:

locs = axis; % get current axis boundaries
hold on; 
plot3([locs(1) locs(2)], [0 0], [0 0]); %plot xaxis, a line between(-x,0,0) and (x,0,0);
plot3([0 0], [locs(3) locs(4)], [0 0]); %plot y axis, the line (0,-y,0) and (0,y,0);
plot3([0 0], [0 0], [locs(5) locs(6)]); % plot z axis
hold off

就像Gnu绘图一样,3D matlab绘图“在一个盒子里”。与Gnu绘图不同,matlab盒子没有轮廓。如果你想勾勒出这些轮廓,你也得画出这些线……啊

% lets plot the 12 lines to make this box in black ('k');
hold on;
% hold x constant and plot 4 parallel-to-x lines;
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(5) locs(5)],'k'); % (-x,-y,-z) to (x,-y,-z)
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(6) locs(6)],'k');
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(5) locs(5)],'k');
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(6) locs(6)],'k');
% plot parallel-to-y lines
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(5) locs(5)],'k');
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(6) locs(6)],'k');
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(5) locs(5)],'k');
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(6) locs(6)],'k');
% plot parallel-to-z lines
plot3([locs(1) locs(1)], [locs(3) locs(3)], [locs(5) locs(6)],'k');
plot3([locs(1) locs(1)], [locs(4) locs(4)], [locs(5) locs(6)],'k');
plot3([locs(2) locs(2)], [locs(3) locs(3)], [locs(5) locs(6)],'k');
plot3([locs(2) locs(2)], [locs(4) locs(4)], [locs(5) locs(6)],'k');
hold off;
现在我们有了盒子

如果我们只想要面积y>0,z>0;我们可以使用axis命令。 在绘制完所有其他直线后使用axis,对我来说真的把一切都搞糟了,所以我会在开始时决定你的极限

总而言之:

figure; 
plot3(x,y,z); % a line from (0,-10,-5) to (0,10,5) similar to the example
locs = axis;
axis([locs(1) locs(2) 0 locs(4) 0 locs(6)]);
locs = axis;

hold on; 
% plot axis
plot3([locs(1) locs(2)], [0 0], [0 0]); %plot xaxis, a line between(-x,0,0) and (x,0,0);
plot3([0 0], [locs(3) locs(4)], [0 0]); %plot y axis, the line (0,-y,0) and (0,y,0);
plot3([0 0], [0 0], [locs(5) locs(6)]); % plot z axis

% plot box
% hold x constant and plot 4 parallel-to-x lines;
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(5) locs(5)],'k'); % (-x,-y,-z) to (x,-y,-z)
plot3([locs(1) locs(2)], [locs(3) locs(3)], [locs(6) locs(6)],'k');
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(5) locs(5)],'k');
plot3([locs(1) locs(2)], [locs(4) locs(4)], [locs(6) locs(6)],'k');
% plot parallel-to-y lines
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(5) locs(5)],'k');
plot3([locs(1) locs(1)], [locs(3) locs(4)], [locs(6) locs(6)],'k');
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(5) locs(5)],'k');
plot3([locs(2) locs(2)], [locs(3) locs(4)], [locs(6) locs(6)],'k');
% plot parallel-to-z lines
plot3([locs(1) locs(1)], [locs(3) locs(3)], [locs(5) locs(6)],'k');
plot3([locs(1) locs(1)], [locs(4) locs(4)], [locs(5) locs(6)],'k');
plot3([locs(2) locs(2)], [locs(3) locs(3)], [locs(5) locs(6)],'k');
plot3([locs(2) locs(2)], [locs(4) locs(4)], [locs(5) locs(6)],'k');
hold off;


我相信你可以做得更好,但我认为这是一个非常好的开始。我会把所有这些乱七八糟的东西放进一个函数来保存输入

我希望这个链接会有帮助。到目前为止发布你的代码?到目前为止我还没有任何代码。我想一个简单的曲面图就足以测试这一点。
plot3
可能是一个很好的开端。
单个轴控制
Matlab文档站点有很多内容,但不完全是我想要的。我需要重新定位整个轴,而不仅仅是刻度、刻度名称等。我真的不明白为什么
plot3
应该是一个很好的开始,因为我知道在Matlab中绘图是如何工作的。我最初的问题有点具体。看起来很棒,弗雷德里克!这绝对是我可以用来实现目标的东西。谢谢