MATLAB删除一个轴上的刻度,同时保留标签

时间:2014-10-09 21:28:39

标签: matlab plot matlab-figure

我想制作一个带有刻度标签但在x轴上没有刻度线的MATLAB图,但在y轴上有刻度线。我怎么能这样做?

我无法使用

set(gca,'XTick',[])

因为这会删除刻度标签。我也不能使用

set(gca,'TickLength',[0 0])

因为这会删除y轴上的刻度线。

2 个答案:

答案 0 :(得分:2)

必须使用多个轴才能达到此效果,因为MATLAB不为X轴和Y轴提供单独的TickLength属性。

示例:

x=linspace(0,4*pi);
y=sin(x);
ax=plotyy(x,y,0,0);
set(ax(1),'XTick',[]);
set(ax(1),'YColor',get(ax(1),'XColor'))
set(ax(2),'TickLength',[0 0]);
set(ax(2),'YTick',[]);

这有点hacky,但它的工作原理是使用plotyy()函数中提供的额外y轴来保持x轴标签的0刻度长度,同时仍然显示原始的y刻度y轴。

答案 1 :(得分:1)

从MATLAB 2015b开始,您可以写:

struct vec {
  float x, y, z;
  float* const p = &x;

  float& operator[](std::size_t i) {
    assert(i < 3);
    return p[i];
  }
};

并且仅将X轴刻度长度减小到零。