Matlab 三维柱状图 bar3 疑惑
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 04:43:31
Matlab 三维柱状图 bar3 疑惑
x=6:0.1:8;
y=1:0.1:5;
[X,Y]=meshgrid(x,y);
F=X.^2-Y;
bar3(F)
上面程序给出的图的x坐标范围是0-20,y坐标范围是0-40. 如何实现画出的图的x坐标范围是6-8,y坐标范围是1-5?
x=6:0.1:8;
y=1:0.1:5;
[X,Y]=meshgrid(x,y);
F=X.^2-Y;
bar3(F)
上面程序给出的图的x坐标范围是0-20,y坐标范围是0-40. 如何实现画出的图的x坐标范围是6-8,y坐标范围是1-5?
把最后一句改成:
bar3(x,F.')
如果对显示效果不满意,可以通过旋转调整视角.
再问: 谢谢答复! 我画了下,这样做x坐标的范围实现了6-8,但是y坐标的范围还是0-20. 还请再赐教!
再答: bar3绘图的实现方式决定了你没有办法指定x和y轴的坐标范围。如果一定想要限定坐标的效果,可以通过修改坐标轴tciklabel的方式:x=6:0.1:8;
y=1:0.1:5;
[X,Y]=meshgrid(x,y);
F=X.^2-Y;
bar3(F);
nx=length(x);
ny=length(y);
axis tight
set(gca,'xticklabel',6+(get(gca,'xtick')-1)*(8-6)/(nx-1));
set(gca,'yticklabel',1+(get(gca,'ytick')-1)*(5-1)/(ny-1));这种做法就是把原来的坐标tick处显示的文字(例如5, 10, …)直接变换到坐标范围,但效果可能不太理想(不是比较整的数):如果希望tick看起来更好看一些,可以直接指定tick位置:x=6:0.1:8;
y=1:0.1:5;
[X,Y]=meshgrid(x,y);
F=X.^2-Y;
bar3(F);
nx=length(x);
ny=length(y);
xt=6:8;
yt=1:5;
set(gca,'xtick',1+(xt-xt(1))*(nx-1)/(xt(end)-xt(1)),'xticklabel',xt)
set(gca,'ytick',1+(yt-yt(1))*(ny-1)/(yt(end)-yt(1)),'yticklabel',yt)效果如下:
bar3(x,F.')
如果对显示效果不满意,可以通过旋转调整视角.
再问: 谢谢答复! 我画了下,这样做x坐标的范围实现了6-8,但是y坐标的范围还是0-20. 还请再赐教!
再答: bar3绘图的实现方式决定了你没有办法指定x和y轴的坐标范围。如果一定想要限定坐标的效果,可以通过修改坐标轴tciklabel的方式:x=6:0.1:8;
y=1:0.1:5;
[X,Y]=meshgrid(x,y);
F=X.^2-Y;
bar3(F);
nx=length(x);
ny=length(y);
axis tight
set(gca,'xticklabel',6+(get(gca,'xtick')-1)*(8-6)/(nx-1));
set(gca,'yticklabel',1+(get(gca,'ytick')-1)*(5-1)/(ny-1));这种做法就是把原来的坐标tick处显示的文字(例如5, 10, …)直接变换到坐标范围,但效果可能不太理想(不是比较整的数):如果希望tick看起来更好看一些,可以直接指定tick位置:x=6:0.1:8;
y=1:0.1:5;
[X,Y]=meshgrid(x,y);
F=X.^2-Y;
bar3(F);
nx=length(x);
ny=length(y);
xt=6:8;
yt=1:5;
set(gca,'xtick',1+(xt-xt(1))*(nx-1)/(xt(end)-xt(1)),'xticklabel',xt)
set(gca,'ytick',1+(yt-yt(1))*(ny-1)/(yt(end)-yt(1)),'yticklabel',yt)效果如下: