Matlab Subplot Axes

时间:2012-11-01 13:20:45

标签: matlab

我对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认为没有足够的空间来放置所有的刻度和标签并显示一个挤压的子集作为结果,但如果只是这样做它会很好看。我如何让它全部显示出来?

3 个答案:

答案 0 :(得分: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)

希望这有帮助。

答案 1 :(得分: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)开始,由于刻度线比刻度标签多,所以刻度标签将重复,如您所见: enter image description here

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

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

enter image description here

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

PS:使用子图,您可以创建不同的轴并分别为每个轴对象设置不同的刻度。默认情况下,轴链接或其他东西,但完全独立!当您使用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.

enter image description here

答案 2 :(得分:1)

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