2016-05-13 2 views
2

Я хотел бы сохранить некоторые данные в рукоятке осей в MATLAB. Для этого я использую свойство UserData. Я заметил, что свойство UserData было очищено командой plot. Это нормальное поведение? По замыслу я могу понять, что XData и YData дескриптора оси будут обновляться, но почему UserData очищается?Точки и UserData в MATLAB

Здесь вы можете найти образец кода, который показывает мою проблему. Я использую 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 
+1

Это задокументированное поведение, построение с помощью ['hold off'] (http://www.mathworks.com/help/matlab/ref/hold.html#description) очищает * все * свойства осей. – excaza

ответ

3

Комментарий @excasa правильный, дополнительная информация для вас.

UserData очищается, так как значение по умолчанию для NextPlot собственности replace, я изменить это add во всех моих MATLAB, как я в основном хочу создать несколько участков, а затем я использую 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.