Matlab - 将Y轴移动到原点?

时间:2015-08-12 23:37:22

标签: matlab plot

我知道Matlab有时不是制作“花式”情节的最佳工具,但由于我的大学需要它,我没有太多选择。

我想将以下示例中的Y轴和“箭头” - 注释移动到x = 0。

X = -pi/2 : 0.001 : pi/2;
Y = cos(X).^2;
plot(X, Y,'Color',[0,0,1]);

ylim([0 1.2]);
set(gca, 'YTick',[1.2],'yticklabel',{'{\color[rgb]{0,0,1}X(f)}'});
set(gca, 'XTick',[-pi/2,pi/2],'xticklabel',{'-f_{max}' 'f_{max}'});

set(gca,'fontsize',16);
box off;
grid off;
fig_pos=get(gca,'Position');
xp1=fig_pos(1);
xp2=fig_pos(1)+fig_pos(3)+0.02;
yp1=fig_pos(2);
yp2=fig_pos(2)+fig_pos(4)+0.03;
a1=annotation('arrow', [xp1 xp2],[yp1 yp1]);
a2=annotation('arrow', [xp1 xp1],[yp1 yp2]);

enter image description here

我尝试使用FileExchange的PlotAxesAtOrigin和axiscenter,但由于注释,这不能正常工作。

有没有人知道如何使这项工作?

谢谢你的帮助,Klaus!

2 个答案:

答案 0 :(得分:1)

移动y轴箭头注释是直截了当的。只需用

替换最后一行
a2=annotation('arrow', fig_pos(1)+fig_pos(3)/2*[1 1],[yp1 yp2]);

移动X(f)稍微有问题,因为您无法再使用Ytick标签。 用

替换你的第5行
set(gca, 'YTick','');

并添加以下行

text(0.1,1.2,'{\color[rgb]{0,0,1}X(f)}','FontSize',16);

在代码的末尾。

无法移除仍在轴左侧的黑色垂直线,因此您需要使用其他注释掩盖它。像

这样的东西
annotation('line',fig_pos(1)*[1 1],[fig_pos(2) fig_pos(2)+fig_pos(4)],...
'Color',get(gcf,'Color'),'LineWidth',2);

会做的。

这给了

enter image description here

最后要注意的是,您创建了一个名为fig_pos的变量。这是误导性的,因为它包含轴位置(在图上),图形位置(这是它相对于显示器左下角的位置)。您的变量应该被称为axis_pos

答案 1 :(得分:0)

您可以使用"轴"命令,如果你知道fmax的值。轴([xmin xmax ymin ymax])