【问题标题】:Matlab and XTickLabelMatlab 和 XTickLabel
【发布时间】:2014-11-04 19:23:59
【问题描述】:

我一直在尝试让 Matlab 更改我的轮廓图上的标签大约一个小时。当我去更改 XTickLabel 或 XTick 时,它只是完全删除了我的 x 轴!令人沮丧和愤怒的是,我正在做完全所有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])

任何帮助将不胜感激!

【问题讨论】:

  • 绘图是不是问题? ;) 此外,可能值得链接您提到的帮助页面。
  • mathworks.com/matlabcentral/answers/… mathworks.com.au/help/matlab/ref/axes-properties.html 两者都没有太大帮助 - 据我所知,我正在按照他们的要求做!图表本身不是问题 - 我需要更改的是轴(特别是标签/刻度)。
  • 你想如何改变 XTickLabel 或 XTick ?你打算把它/他们改成什么?
  • 据我所知(这不是很远 - 我对这个级别的 matlab 编码相当陌生),我正在更改“Xtick”和“XTickLabel”的轴处理程序设置。他们目前只保存我的数组的值(我不想要)。我想将我的 x 轴更改为 UT 时间 - 从 0 到 23,以相等的增量(1)。
  • 能否为我们提供一些timefpowerlevels 的样本数据,以供重复使用?

标签: matlab plot contourf


【解决方案1】:

已解决:

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

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

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

【讨论】:

    【解决方案2】:

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

      【讨论】:

      • 感谢您的建议 - 但它不起作用。据我所知,我之前的和这个是等价的。
      • @Yoshi 你能分享一下你正在得到什么以及你打算得到什么的截图吗?
      • @Yoshi 根据您发布的解决方案,我想建议一种使其更通用的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      相关资源
      最近更新 更多