旋轉XTICK標籤我一直在繪製熱圖與Matlab中的標籤,主要使用功能於imagesc繪製熱圖和xticklabel_rotate旋轉XTICK標籤。 (please see here for xticklabel_rotate)。 它通常運作良好。但是,今天我遇到了一些問題,這似乎是由xticklabel_rotate引起的(或者由xticklabel_rotate使用?Matlab的文本 handle),從代碼生成問題或錯誤而繪製熱圖,並在Matlab
爲了說明這個問題,在我打印我的代碼如下,結果(基本上,它做什麼是隨機生成一個正態分佈的數據矩陣,得出用於使用於imagesc所述數據的熱圖,畫出對頂部和軸的右邊其標籤,然後旋轉xticklabels):
function debug_xticklabelRotate(numX, numY, axisFontsize)
data = randn(numY, numX);
imagesc(data);
colormap(jet);
box on
set(gca, 'ticklength', [0,0]);
set(gca, 'xminortick', 'off', 'yminortick', 'off');
set(gca, 'XAxisLocation', 'top');
set(gca, 'YAxisLocation', 'right');
set(gca,'FontSize', axisFontsize);
axis image
set(gca, 'Xtick', 1 : numX);
htext = xticklabel_rotate([],90, [], 'fontsize', axisFontsize);
set(gca, 'YTick', 1 : numY);
end
問題1:我用參數
debug_xticklabelRotate(40, 100, .5);
輸出圖像如下所示(這裏節省空間,我切的形象和只顯示前幾行):
http://i52.tinypic.com/smazoj.jpg
請注意,錯誤的是,作爲調用xticklabel_rotate的結果,既不繪製圖框的右側也不繪製yticklabels。
問題2:當我調用與參數上面的函數作爲
debug_xticklabelRotate(40, 200, .5); % only numY is changed from 100 to 200
輸出圖像如下所示(在這裏再次,以節省空間,我切圖像和僅示出了頂部幾行) :
http://i55.tinypic.com/317grdd.png
與用numY = 100該呼叫,在該圖中兩個數據的圖像和標籤顯示。但是,請注意這裏有兩個問題。首先,xticklabel的fontsize與yticklabel(axisFontsize)的不一樣。其次,xtick標籤是未對齊以及列(xticks):有些標籤更接近,有些更遠。
請注意,如果我刪除函數debug_xticklabelRotate中的xticklable_rotate的函數調用,所有這些提到的問題都消失了(除了現在xticklabel不旋轉)。
我希望我的問題在上面清楚地說明。任何有關解決問題的建議將受到高度讚賞。非常感謝你。
Hi Amro:問題2中描述的兩個問題(字體大小和對齊)都存在於左y標籤和右y標籤。在debug_xticklabelrotate(40,100,.5)中使用左邊的y標籤確實會生成一個熱圖,其中顯示了數據,框和標籤,但在第二個圖像中仍然出現問題2中描述的字體大小和對齊問題。 xticklabel_rotate一直是一個非常受歡迎的功能,但除了我在這裏提到的之外還有其他一些問題。不知道是否有替代方案,或者爲什麼Matlab不提供內置的旋轉支持。 – Causality 2011-01-22 02:53:19