我想在MATLAB的轴句柄中存储一些数据。 我正在使用“UserData”属性来执行此操作。 我注意到plot命令已清除“UserData”属性。这是正常行为吗?通过绘图,我可以理解轴句柄的XData和YData会更新,但为什么要清除UserData?
在这里,您可以找到显示我的问题的示例代码。我正在使用MATLAB 2014b。
figure
set(gca, 'UserData', 10)
disp(['UserData = ' num2str(get(gca, 'UserData'))]) % displays 10 in the command window
plot(1:10);
disp(['UserData = ' num2str(get(gca, 'UserData'))]) % displays no userdata, it is empty
答案 0 :(得分:4)
@excasa评论是正确的,还有一些额外的信息。
UserData被清除,因为NextPlot
属性的默认值为replace
,我在所有matlab中将其更改为add
,因为我主要想要创建多个绘图然后当我想清除它时,我在轴上使用了一个cla。
在你的情况下,我会做的是:
f = figure;
ax = axes ( 'parent', f, 'nextplot', 'add' ); % defining parent is good practice
plot ( ax, [1:10], 'ro' );
ax.UserData = 10;
plot ( ax, [1:10], 'k-' );
等...
注意:将轴定义为变量并在所有命令中使用它而不是gca
或gcf
,这是一种很好的做法。