首页 文章

Matlab和XTickLabel

提问于
浏览
0

我正在做help pageshelp forums要求我做的事情 - 老实说我不明白为什么这不起作用 .

因此,我在这里 .

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

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 回答

  • 1

    解决了:

    我意识到'XTick'依赖于我用来定义x轴的数组的当前值 . 我不能只假设matlab将均匀地分隔一个新数组(至少,如果有办法做到这一点,我不知道) . 所以,由于我的X轴上有85,680个数据点,我只需将其重新调整为:

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

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

  • 0

    你有一个最终的 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])
    

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

  • 3

    您可以使用单元格数组来定义 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)
    

相关问题