修改x轴位置

时间:2015-11-14 12:27:11

标签: matlab matlab-figure

在Matlab中使用plot函数时,左侧和底部分别显示y轴和x轴。但是我喜欢x轴在图的中间穿过尺度和数字如下:

enter image description here

请原谅我的业余绘画技巧。但基本上我希望x轴移动到顶部,例如我想在那里有数字和那些小的突起,如红线所示,但一直到右边,但我不希望每个下面有一个数字"凸块"只是整数。我试图谷歌答案,但无法找到任何东西。

显然,我不想要两个x轴,所以理想情况下底部的那个会消失。

2 个答案:

答案 0 :(得分:3)

通常,除了一些丑陋的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';

enter image description here

答案 1 :(得分:0)

这比预期的要复杂一些,因为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')

matlab figure

但你也应该查看fileexchange,因为可能已经有了更好的解决方案。