我想制作一个带有刻度标签但在x轴上没有刻度线的MATLAB图,但在y轴上有刻度线。我怎么能这样做?
我无法使用
set(gca,'XTick',[])
因为这会删除刻度标签。我也不能使用
set(gca,'TickLength',[0 0])
因为这会删除y轴上的刻度线。
答案 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轴刻度长度减小到零。