Matlab和XTickLabel

时间:2014-11-04 09:47:49

标签: matlab plot contourf

我一直试图让Matlab改变我的轮廓图上的标签大约一个小时了。当我去更改XTickLabel或XTick时,它只是完全删除了我的x轴!令人沮丧和令人愤怒的事情是,我正在完全所有help pageshelp forums要求我做的事情 - 老实说我不明白为什么这不起作用

因此,我在这里。

我的绘图代码(不需要知道函数 - 代码非常强烈。但是,它是一个带有效数据和范围的2D轮廓图 - 轴是问题,而不是图形):< / p>

   contourf(time,f,power,levels)
   colormap(jet(levels))
   set(gca,'XTickLabelMode','manual')
   set(gca, 'XTick', 0:23);
   set(gca, 'XTickLabel', {'0';'1';'23'});
   xlabel('Time (UT)')
   ylabel('Frequency (Hz)')
   caxis([0,8])
   axis([0 StopTime 0 0.1])

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

解决:

我意识到&#39; XTick&#39;依赖于我用来定义x轴的数组的当前值。我不能仅仅假设matlab会平均分配一个新阵列(至少,如果有这样的方法,我也不知道)。所以,由于我的X轴上有85,680个数据点,我只需通过以下方式重新调整它:

   set(gca, 'XTick', 0:3570:85680)
   set(gca, 'XTickLabel', num2cell(0:24))

故事的道德:Matlab并不允许你使用这两个函数任意地将新轴贴在旧轴上。

答案 1 :(得分:1)

你有一个最终的axis([0 StopTime 0 0.1]))命令,可以通过创建一个全新的轴来清除你的情节。这就是为什么你现有的所有情节都消失了。尝试删除它:

contourf(time,f,power,levels)
colormap(jet(levels))
set(gca,'XTickLabelMode','manual')
set(gca, 'XTick', 0:23);
set(gca, 'XTickLabel', {'0';'1';'23'});
xlabel('Time (UT)')
ylabel('Frequency (Hz)')
caxis([0,8])

现在问题变成了:您的代表是否明智地放置了您所代表的数据?在不知道数据的情况下,我无法为您解答这个问题。所以球现在在你的球场上。 ;)

答案 2 :(得分:0)

您可以使用单元格数组来定义tickstick-labels,然后将其与set函数调用一起使用,以使其更优雅 -

xtick_label_cellarr = num2cell(0:24)
xtick_cellarr = linspace(0,85680,numel(xtick_label_cellarr))

set(gca, 'XTick',xtick_cellarr)
set(gca, 'XTickLabel',xtick_label_cellarr)