0

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

因此,我在这里。

我的绘图代码(不应该需要函数知识 - 代码相当密集。但是,它是具有有效数据和范围的二维轮廓图 - 轴是问题,而不是图形):

   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])

任何帮助将不胜感激!

4

3 回答 3

3

解决了:

我意识到“XTick”依赖于我用来定义 x 轴的数组的当前值。我不能仅仅假设 matlab 会均匀地间隔一个新数组(至少,如果有办法做到这一点,我不知道)。因此,由于我的 X 轴上有 85,680 个数据点,我只需通过以下方式重新调整它:

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

故事的寓意:Matlab 不允许您使用这两个函数任意地将新轴粘贴在旧轴上。

于 2014-11-04T11:18:21.957 回答
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])

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

于 2014-11-04T10:32:09.283 回答
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)
于 2014-11-04T10:13:18.507 回答