Matlab - 将 Y 轴移动到原点?

标签 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 和轴中心,但由于注释,这无法正常工作。

有谁知道如何实现这一点?

谢谢你的帮助,克劳斯!

最佳答案

移动 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

关于Matlab - 将 Y 轴移动到原点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977180/

相关文章:

r - 更新 shiny r 中的绘图输出

matlab - 使用 MATLAB 计算 for 循环内的多个正弦曲线,然后绘制它们

r - 为什么 geom_line 中间的 NA 并不总是断线?

matlab - 使用比 Matlab 脚本更多的内存部署的 Matlab 应用程序

matlab - 在 MATLAB 中仅将图形内容转换为图像

c++ - 如何通过Matlab Mex编译工具使用C++编译器

MATLAB:字符串元胞数组的比较

java - 警告 :oejuc. 抽象生命周期 :FAILED?

r - 用 R 表示水平和垂直误差线的椭圆

python - Groupby 多年来每个月的最大值和最小值