为什么matlab跳过标签的下半部分?

为什么matlab跳过标签的下半部分?,matlab,matlab-figure,figure,Matlab,Matlab Figure,Figure,下面是一个很好的streightforward代码,用于使用imagesc命令以缩放颜色显示矩阵。问题是最终的数字有错误的标签,并且没有显示标签的第二部分。它应该是从1到21,但它是从1到10 figure; imagesc(magic(21)); set(gca,'XTickLabel',{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19'

下面是一个很好的streightforward代码,用于使用imagesc命令以缩放颜色显示矩阵。问题是最终的数字有错误的标签,并且没有显示标签的第二部分。它应该是从1到21,但它是从1到10

figure;
imagesc(magic(21));
set(gca,'XTickLabel',{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21'})
set(gca,'YTickLabel',{'1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '20' '21'})

我使用的是Ubuntu 16.04和Matlab 2016b。

你必须为这些记号指定位置,而不仅仅是添加标签

figure;
imagesc(magic(21));
ax1 = gca;
ax1.YTick = 1:21;
ax1.XTick = 1:21;
ax1.XTickLabels = {'One','Two','Three',...
ax1.YTickLabels = {'Red','Brown','Green',...

自Matlab 2014b以来,Mathworks还创建了一个新的图形系统。您可以直接以对象的形式访问图形,而不必使用set and get everywhere。

设置标签文本,但不设置位置,因此它将自动放置标签位置,然后替换它们的文本

要设置标签的位置,请首先执行以下操作:

set(gca,'XTick',...)
然后,您可以在这些标签中写入您预先输入的内容:

set(gca,'XTickLabel',{'banana', 'platano', 'potato',... })
您可以测试以下内容:


回答得好。现在,如果对于标签,而不是数字,我想为几个月的示例设置一个字符串列表呢?@Woeitg,你误解了。Xtick告诉你标签放在哪里,XTicklabel告诉你标签上写了什么。你需要同时使用这两种语言。@Woeitg-nice;接受对你最有帮助的答案@不幸的是,这并不重要,只是你更喜欢的一个。重要的是你确实接受了one@Woeitg我特意省略了它,以明确您的标签不需要包含其位置的文本。您可以将任何内容放入…,例如1:10:100,但我假设您需要1:21,不带xlim和ylim,它也显示相同的结果,但如果不使用XTick,则xlim将类似于[0.5 21.5]。我明白了,这是有区别的,但我更喜欢不带xlim和ylim使用它。至少它看起来更好:-
imagesc(magic(21));
set(gca,'XLim',[1 21])
set(gca,'XTick',[1:1:21])
set(gca,'XTickLabel',{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21'})
set(gca,'YLim',[1 21])
set(gca,'YTick',[1:1:21])
set(gca,'YTickLabel',{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21'})