1

我对 9 个情节的轴发生的事情有一点问题,这些情节被子绘制在一起。我subplot(3,3,x)用来制作一个由 9 个图组成的 3x3 网格,并使用自定义标记轴的刻度

set(gca, 'XTickLabel', {'0,0','0,1','0,2','1,0','1,1','1,2','2,0','2,1','2,2'});
set(gca, 'YTickLabel', {'0,0','0,1','0,2','1,0','1,1','1,2','2,0','2,1','2,2'});

问题是,并非所有指定的刻度都出现在子图上——只有大约一半,而且它们出现在错误的地方。

我猜这是 matlab 认为没有足够的空间来放置所有的刻度和标签并因此显示一个压缩的子集,但如果它只是这样做看起来会很好。我如何让它全部显示出来?

4

3 回答 3

4

您可以设置图形轴的“Xtick”和“Ytick”属性。它们定义了哪些刻度是可见的。在您的情况下,您想显示前 9 个 xticks 和前 9 个 yticks - 以下命令将执行此操作:

set(gca,'Xtick',1:9, 'Ytick',1:9)

如果您想显示每第二个刻度,您将使用:

set(gca,'Xtick',1:2:9,'Ytick',1:2:9)

希望这可以帮助。

于 2012-11-01T14:16:41.453 回答
3

您使用这些命令设置自定义刻度标签,它们会显示当时刻度的位置。你可以看到刻度是什么

get(gca,'YTick');

例如:

plot(-2:2)
get(gca,'YTick');

返回[-2 -1.5 -1 -0.5 0 0.5 1 1.5 2]。如果你现在使用

set(gca,'yticklabel',{'a','b','c','d','e'})

然后这些字母将出现在所有刻度上,从第一个 ( -2) 开始,并且由于刻度比刻度标签多,刻度标签将重复,如您所见: 在此处输入图像描述

所以这些是刻度,但也许你只想使用标签,我添加了以下内容:

ylabel('this is the ylabel');
xlabel('and this the xlabel');

在此处输入图像描述

玩弄它并了解发生了什么,这并不难;)

PS:使用 subplot,您可以创建不同的轴并分别为每个轴对象设置不同的刻度。默认情况下,轴没有链接或其他东西,而是完全独立的!当您使用gca时,它返回当前轴,即带有子图:最后一个创建或选择的轴subplot(3,3,x)

因此,如果您想设置刻度,标签是所有轴上的任何其他内容,您必须分别为所有轴设置,即:

subplot(3,3,1);
  xlabel('x');
  ylabel('y');
  title('subplot (1,1)');
  set(gca,'xticklabel',{'a','b','c'});
subplot(3,3,2);
  xlabel('x');
  ylabel('y');
  title('subplot (1,2)');
subplot(3,3,1);
  xlabel('x');
  ylabel('y');
  title('subplot (1,1)');
etc.

在此处输入图像描述

于 2012-11-01T14:38:42.717 回答
1

这是空间的问题。如果您增加绘图窗口的大小,Matlab 将显示更多的刻度,反之亦然。您还可以减小字体大小以适应轴上的更多刻度(尝试使用set(gca,'FontSize',5)或任何其他字体大小值)。

于 2012-11-01T14:23:39.547 回答