我一直试图让Matlab改变我的轮廓图上的标签大约一个小时了。当我去更改XTickLabel或XTick时,它只是完全删除了我的x轴!令人沮丧和令人愤怒的事情是,我正在完全所有help pages和help 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])
非常感谢任何帮助!
答案 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)
您可以使用单元格数组来定义ticks
和tick-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)