我知道 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]);
我尝试使用 FileExchange 的 PlotAxesAtOrigin 和轴中心,但由于注释,这无法正常工作。
有谁知道如何实现这一点?
谢谢你的帮助,克劳斯!
最佳答案
移动 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);
会做。
这给了
最后要注意的是,您创建了一个名为 fig_pos
的变量。这是误导性的,因为它包含轴位置(在图形上),不是图形位置(它相对于显示器左下角的位置)。您的变量实际上应该称为 axis_pos
。
关于Matlab - 将 Y 轴移动到原点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977180/