我有一個帶3軸組件的Matlab GUI。他們的標籤是predicted_ax
,cost_ax
和error_ax
。我想在第一軸組件(帶有標記predicted_ax
)的特定位置繪製垂直線。我怎麼做?如何在Matlab GUI中在軸上繪製垂直線?
我試過這段代碼:
ylim = get(handles.predicted_ax, 'ylim');
line([linePos, linePos], ylim);
但它繪製(那些與標籤error_ax
)不同軸上行了!我相信我沒有混淆標籤或軸組件。在事實上另一個測試
ylim = get(handles.cost_ax, 'ylim');
line([linePos, linePos], ylim);
給出完全相同的結果:繪製直線的最後一個組件的軸與標籤error_ax
。那麼我該如何在右側的軸上畫線?
這是最好的答案。每條線都有一個父軸。如果您不提供帶有軸手柄的line()函數,則默認情況下會將該線附加到「當前」軸。這就是爲什麼軸(handles.predicted_ax)有效。它使predict_ax成爲當前座標軸,因此之後創建的任何行都將其作爲默認父項。但是,我覺得只需將該行的「Parent」屬性設置爲要附加到的軸就會更清晰。一般來說,當您有更清晰的選項可用時,依靠使用當前座標軸(gca)或當前圖(gcf)並不是一個好主意。 – cholland 2012-07-18 23:01:40
作爲一個側面說明。你可以這樣做:'line([linePos,linePos],ylim,'Parent',handles.predicted_ax)' – cholland 2012-07-18 23:02:27
@cholland這將是最好的答案,如果它的工作。但事實並非如此。 – drasto 2012-07-19 09:57:24