在Matlab中使用plot
函数时,左侧和底部分别显示y轴和x轴。但是我喜欢x轴在图的中间穿过尺度和数字如下:
显然,我不想要两个x轴,所以理想情况下底部的那个会消失。
答案 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';
答案 1 :(得分:0)
这比预期的要复杂一些,因为matlab不提供此功能。 您可以通过绘制线并关闭原始轴来手动完成。
上找到了一些例子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,因为可能已经有了更好的解决方案。