2014-11-04 59 views
0

我一直在試圖讓Matlab改變contourf圖上的標籤大約一個小時。當我去改變XTickLabel或XTick時,它完全消除了我的X軸!令人沮喪和憤怒的事情是,我正在做究竟是什麼help pageshelp forums要求我做 - 我真的不明白爲什麼這不起作用。Matlab和XTickLabel

因此,我在這裏。

我的繪圖代碼(不需要知道函數 - 代碼是相當強烈的,但它是一個2D contourf圖,有效的數據和範圍 - 軸是問題,而不是圖):

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

該陰謀是或不是問題? ;)另外,可能需要鏈接您提到的幫助頁面。 – JoErNanO 2014-11-04 09:51:25

+0

http://www.mathworks.com/matlabcentral/answers/92565-how-do-i-control-axis-tick-labels-limits-and-axes-tick-locations http://www.mathworks。 com.au/help/matlab/ref/axes-properties.html 沒有太多的幫助 - 據我所知,我正在做他們告訴我的事情! 而圖本身並不是問題 - 這是我需要改變的軸(特別是標籤/刻度)。 – Yoshi 2014-11-04 09:54:30

+0

你如何改變* XTickLabel或XTick *?你打算把它改變成什麼? – Divakar 2014-11-04 10:01:47

回答

3

解決:

我意識到「XTICK」依賴於我用來定義x軸的陣列的當前值。我不能僅僅假設matlab將均勻地分配一個新數組(至少,如果有辦法做到的話,我不知道)。

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

這個故事的寓意:Matlab的不會讓你隨心所欲堅持一個新的軸在使用這兩種舊的話,因爲我對我的X軸上有85680個數據點,我只是通過重新調整它功能。

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) 
+0

感謝您的建議 - 但它沒有奏效。據我所知,我以前的情況與此相當。 – Yoshi 2014-11-04 10:17:27

+1

@Yoshi你能分享你所得到的和你打算得到的截圖嗎? – Divakar 2014-11-04 10:18:34

+0

http://i62.tinypic.com/23mm23o.jpg – Yoshi 2014-11-04 10:24:17

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

現在問題變成:您的標記是否明智地放置在您所代表的數據上?在不知道數據的情況下,我無法回答這個問題。所以現在球在你的球場上。 )