我想離開matlab並改用python + matplotlib。但是,我還沒有真正弄清matlab'handles'的matplotlib等價物是什麼。所以這裏有一些matlab代碼,我返回句柄,以便我可以改變某些屬性。這段代碼使用matplotlib的確切等價物是什麼?我經常在matlab中使用句柄的'Tag'屬性,並使用'findobj'。這可以用matplotlib來完成嗎?這個matlab代碼相應的matplotlib代碼是什麼
% create figure and return figure handle
h = figure();
% add a plot and tag it so we can find the handle later
plot(1:10, 1:10, 'Tag', 'dummy')
% add a legend
my_legend = legend('a line')
% change figure name
set(h, 'name', 'myfigure')
% find current axes
my_axis = gca();
% change xlimits
set(my_axis, 'XLim', [0 5])
% find the plot object generated above and modify YData
set(findobj('Tag', 'dummy'), 'YData', repmat(10, 1, 10))
太棒了! matplotlib中的'gid'屬性也類似於matlab中的'Tag'屬性,即它是否存在於任何類型的對象(圖形,繪圖,圖例)中。 – memyself
不,「plt.figure」和「plt.legend」不接受'gid'參數。如果您需要跟蹤一般對象組,則可以更容易地使用從「虛擬」標籤名稱映射到對象列表的字典。那麼你也不需要依賴'matplotlib'的'findobj'。 – unutbu
但在這種情況下,我需要始終在某處存儲對象列表。這就是findobj的美妙之處 - 我可以找到不長在一起的對象,而且我不需要明確地保存這些對象(並將它們傳遞給它們)。 – memyself