修改x-axis个位置

Modify x-axis position

当您在 Matlab 中使用 plot 函数时,您会分别在左侧和底部看到 y 轴和 x 轴。但我希望 x-axis 在图的中间划线,比例和数字如下所示:

请原谅我的业余绘画技巧。但基本上我希望 x-axis 移动到顶部,例如,我希望那里有数字和红线上指示的那些小颠簸,但一直到右边,但我不想要数字在每个 "bump" 下只是整数。我试图 google 答案但找不到任何东西。

显然,我不想要两个 x-axis,所以最理想的情况是底部的那个会消失。

这比预期的要复杂一些,因为 matlab 不提供此功能。 您可以通过绘制线条并关闭原始轴来手动完成。

我在 Matlab Central

上找到了一些例子
t=linspace(0,10,100);plot(t,sin(2*pi*t));
axis([-10 10 -1 1]);

y=get(gca,'ytick');
x=get(gca,'xtick');
hold on
Lx=line([x(1) x(11)],[0 0]);
Ly=line([0 0],[y(1) y(11)]);
set(Lx,'color',[1 0 0]);
set(Ly,'color',[1 0 0]);
for i=1:length(x)
    plot(x(i),0,'k*',0,y(i),'k*');
    text(x(i),-.05,num2str(x(i)));
    text(-1,y(i),num2str(y(i)));
end
set(gca,'yticklabel',[],'xticklabel',[],'ytick',[],'xtick',[]);
set(gca,'visible','off')

但您还应该查看 fileexchange,因为可能已经有一些更好的解决方案。

通常,除了一些丑陋的 hackish 解决方案(可以在 FEX 上找到),您想要的功能在 Matlab 中不适用。它似乎并非如此,它随着最近的更新而改变。因此,如果您真的需要它,请将您的图形保存为矢量图形并使用 Inkscape 或 Illustrator 对其进行编辑,或者直接使用 Latex/pgfplots/Matlab2Tikz 从头开始​​绘制它。

然而,图形引擎的 2014b 更新引入了以下使用一些 undocumented features 的解决方案。也许这已经足够了,我敢说这是最接近没有编码倒立的。

需要Matlab R2014b或更高版本!

%// example
t = linspace(0,4*pi);
plot(t,sin(t))
ylim([-1.5,1.5]); xlim([0,4*pi]);

%// get handle
h = gca;

%// modify y-axis
h.YBaseline.BaseValue = 0.5;
h.YBaseline.Visible = 'on'; 
h.XRuler.Axle.Visible = 'off';

%// modify x-axis
h.XBaseline.BaseValue = 2;
h.XBaseline.Visible = 'on';
h.YRuler.Axle.Visible = 'off';