在matlab中将刻度线放置在每个网格的中间

Placing ticks in the middle of each grid in matlab

我想在 matlab 上创建一个带轴的图形。但我希望 y 轴上的刻度位于每个网格的中间。我怎么做? 一个例子是这样的:

我不知道有特定的 matlab 函数可以完成此操作。

作为解决方案,您可以自己在 0.5、1.5、2.5、... 处用垂直线和水平线绘制网格

作为解决方法,您可以同时打开主要和次要网格线,但将主要网格线设置为背景颜色,如下所示:

ax = axes;
grid(ax,'on');
grid(ax,'Minor');
set(ax,'GridColor',get(ax,'Color'))
set(ax,'MinorGridLineStyle','-')
set(ax,'TickLength',[0;0]);

给出:

我还找到了另一种方法,即绘制自己的次要网格线而不显示主要网格线。

figure1 = figure;
axes1 = axes('Parent',figure1,'ZGrid','on','XGrid','on',...
    'YTickLabel',{'','1','2','3', ''},...
    'YTick',[0 1 2 3 4 ],...
    'YGrid', 'off')

ylim([0.5 3.5]);
xlim([0 20]);
% gridlines ---------------------------
hold on
g_y=[0.5:1:4]; % user defined grid Y [start:spaces:end]
g_x=[0:2:20]; % user defined grid X [start:spaces:end]

for i=1:length(g_y)
   plot([g_x(1) g_x(end)],[g_y(i) g_y(i)],'k-') %x grid lines   
end

输出:

归功于 https://au.mathworks.com/matlabcentral/answers/95511-in-matlab-is-there-a-way-to-set-the-grid-at-a-spacing-different-from-the-ticks-on-the-axes