如何删除 X 刻度线但保留刻度线标签?

How to remove Ytick marks but keep Ytick labels?

我的总体目标是仅更改 x 轴刻度的大小。但从我的搜索看来,这似乎相当困难。

所以,我尝试改变 'TickLength' 的大小,然后删除 Y 轴刻度。但是,我仍然需要 Y 轴标签。关于如何实现我的总体目标或第二种方法的任何建议?谢谢

绘图代码:

set(gca, ...
  'Box'         , 'off'     , ...
  'TickLength'  , [.19 .19] , ...
  'XMinorTick'  , 'off'      , ...
  'YMinorTick'  , 'off'      , ...
  'YGrid'       , 'off'      , ...
  'Xgrid'       , 'off', ...
  'XColor'      , [.3 .3 .3], ...
  'YColor'      , [.3 .3 .3], ...
  'YTickLabel', int8([ylimits(1):ylimits(2)/3:ylimits(2)]), ...
  'YTick'       ,  []);

您可以将 YTick 的 属性 设置为 [],如下例所示:

figure; 
plot(1:100, 1:100);

ax = gca; 
ax.YTick = [];
ylabel('y label');

这段代码给你这个结果:


更新

图形引擎的 R2014b 更新引入了以下更简单的解决方案:

h = gca;
h.Box = 'off';
h.XRuler.TickLength = 50;
h.YRuler.TickLength = 0;


旧答案

我能想到的唯一方法是复制您的 axes,使顶部透明('color','none'),然后将 x 轴或 y 轴分配给其中一个轴-对象并独立编辑它们:

f = figure(1)

plot(0:10,0:10);

ax1 = gca;
ax2 = copyobj(ax1,f)
set(ax1, ...
  'Box'         , 'off'     , ...
  'TickLength'  , [.19 .19] , ...
  'XMinorTick'  , 'off'      , ...
  'YMinorTick'  , 'off'      , ...
  'YGrid'       , 'off'      , ...
  'Xgrid'       , 'off', ...
  'XColor'      , [.3 .3 .3], ...
  'YColor'      , [.3 .3 .3], ...
  'YTick'       ,  []);
set(ax2, ...
  'color'       , 'none', ...
  'Box'         , 'off'     , ...
  'TickLength'  , [.00 .00] , ...
  'XMinorTick'  , 'off'      , ...
  'YMinorTick'  , 'off'      , ...
  'YGrid'       , 'off'      , ...
  'Xgrid'       , 'off', ...
  'XColor'      , [.3 .3 .3], ...
  'YColor'      , [.3 .3 .3], ...
  'XTick'       ,  []);

如果您在进一步编辑绘图时遇到问题,例如由于两个坐标轴对象,事情无法正确显示,您可以 link 您的坐标轴:

linkaxes([ax1,ax2],'xy')