2016-12-06 200 views
0

我試圖創建一個24x366熱圖,使用imagesc,x軸標記爲13個均勻間隔點{'jan 15','feb 15',...,'dec 15','jan 16'}和y軸標記在每行從1至24,這樣的:Matlab 2016a - 如何獲取xTickLabels僅在imagesc上的某些xTicks上?

Desired imagesc axes

當運行該腳本時,它顯示在y軸上,因爲我想,但它僅顯示第一標籤在x軸上並忽略其他。我可以得到這個工作的情節,但我無法得到它爲一個imagesc工作。我在下面包含了我的腳本。有誰知道如何讓圖像以均勻的間隔在X軸上顯示全部13個標籤?

mylabels = {'jan 15','feb 15','mar 15','apr 15','may 15','jun 15','jul 15','aug 15','sep 15','oct 15','nov 15','dec 15','jan 16'}; 
testspacing = (1:(60*24*30):528480); 
figure 
imagesc(rand(24,366)) 
set(gca,'XTick',testspacing,'XTickLabel',mylabels,'XTickLabelRotation',45,'YTick',1:24,'YTickLabel',1:24) 

回答

0

與您的代碼的問題是,你只能從testspacing您的蜱此起彼伏的情節testspacing=[1 43201 ...]的範圍。您可以通過運行xlim而無需任何參數來檢查x軸的範圍。

您可以重新調整測試間距以適合您的x軸,例如如:

xmax = 366; 
mylabels = {'jan 15','feb 15','mar 15','apr 15','may 15','jun 15','jul 15','aug 15','sep 15','oct 15','nov 15','dec 15','jan 16'}; 
testspacing = (1:(60*24*30):528480); 
testspacing = testspacing/max(testspacing)*xmax; 
figure 
imagesc(rand(24,xmax)) 
set(gca,'XTick',testspacing,'XTickLabel',mylabels,'XTickLabelRotation',45,'YTick',1:24,'YTickLabel',1:24) 

或者您只是正確地生成testspacing。由於您無論如何都將自己的標籤放在軸上,因此您可以根據自己的需要選擇使用testspacing = [0:30.5:366]testspacing = [0:30:366]。這也將幫助您稍後調試您自己的代碼。

另一方面,您應該考慮減少一般標籤的數量,並確定哪些標籤真的有用。也許每個第二或第三個月就夠了。您可以通過將各個標籤設置爲空字符串「刪除」''