2014-01-08 101 views
3

我有我認爲是一個簡單的問題:我有一個矩陣,我使用imagesc圖像。我只是想在圖像的右側顯示第二個y軸。我怎麼做?示例:在MATLAB的imagesc圖像上放置兩個y軸

clear all; 
aMatrix = rand(20,30); 
yAxis1 = 32.*(1:size(aMatrix,1)); 
yAxis2 = 165.*(1:size(aMatrix,1)); 
xAxis = 1:size(aMatrix,2); 
imagesc(yAxis1, xAxis1, aMatrix); 

以下將在左側顯示帶有yAxis1的圖像。這很好,但是如何在圖片的右側顯示yAxis2?謝謝。

回答

5
aMatrix = rand(20,30); 
    yAxis1 = 32.*(1:size(aMatrix,1)); 
    yAxis2 = 165.*(1:size(aMatrix,1)); 
    xAxis = 1:size(aMatrix,2); 
    h1=imagesc(xAxis, yAxis1, aMatrix);set(gca,'YDir','normal'); 
    ax1=gca; 
    set(ax1,'YColor','r','YAxisLocation','right'); 
    set(ax1,'XTickLabel',' '); 
    ax2=axes('Position',get(ax1,'Position'),'YAxisLocation','left'); 
    h2=imagesc(xAxis, yAxis2,aMatrix,'Parent',ax2); 
    set(gca,'YDir','normal'); 

enter image description here

+0

謝謝,但你可以請你澄清究竟是什麼回事? – Spacey

+0

@Learnaholic它覆蓋在同一個圖中的兩個圖像(在你的情況下它是相同的aMatrix圖像)。 ax1是y軸設置在右側的圖形手柄,當您第二次對圖像進行成像時,首先獲取imagesc之前的軸信息。第一張圖片的位置是通過get(ax1,'Position')獲得的。 y軸設置在左側。 – lennon310

+0

我完全不理解發生了什麼事。當您第一次製作圖像時,其默認軸線位於左側​​。爲什麼你有'xticklabel'?我們不處理xaxis。然後在ax2中將其設置回左側?它應該是在右邊......那麼最後你將Ydir再次設置爲「正常」......爲什麼? – Spacey