Live Script с анимацией
В MATLAB 2016a введены Live Scripts, позволяющие показывать результаты печати рядом со сценарием. Можно ли как-то показать анимацию? Например, следующий код в обычном сценарии нарисует несколько точек и затем повернет axes
:
x = rand(10, 3);
plot3(x(:, 1), x(:, 2), x(:, 3), 'o')
for ii = 1:360
camorbit(1, 10*cos(ii/90*pi)*pi/45)
drawnow
pause(0.01)
end
Если это встроено в Live Script, отображается начальный график, а затем, по-видимому, ничего не происходит во время выполнения цикла, тогда последний аспект (который совпадает с исходным графиком) отображается в новом элементе отображения.
Как вариант, есть ли возможность взаимодействовать с графиками в реальном сценарии (кроме двойного щелчка, чтобы открыть график на новом рисунке)? Например. rotate3d
не имеет эффекта.
Изменить: Начиная с выпуска 2019a, анимация возможна в соответствии с примечаниями к выпуску.
Ответы
Ответ 1
Пример кода, приведенный в вопросе, создает вращающийся график по состоянию на MATLAB 2019a. Это не работает еще в 2018b. В заметках о выпуске за 2019 год упоминается, что
Вы можете включить анимацию цикла в Live Editor, чтобы показать изменения в нанесенных данных с течением времени. Чтобы включить анимацию в живом редакторе, установите для параметра matlab.editor.AllowFigureAnimations
значение true
:
s = settings;
s.matlab.editor.AllowFigureAnimation.PersonalValue = true;
Выполнение этих двух строк перед примером скрипта даст ожидаемое поведение.
Ответ 2
Кажется, что ответ отрицательный - Live Scripts слишком молоды, чтобы быть тем богатым. Только тот факт, что они неуязвимы, заставит меня держаться подальше от них на 1-2 версии больше.
Вы просмотрели ноутбуки Matlab? Если вы после довольно форматирования и некоторой базовой интерактивности, это может быть то, что вы ищете.
Ответ 3
В выпуске 2016b добавлена возможность управлять axes
элементами управления, которые отображаются при наведении курсора на axes
. Обратите внимание, что это не работает для axes
, которые невидимы (Visible='off'
). Вместо этого правители и фон должны быть скрыты:
ax = axes;
x = rand(9, 3);
plot3(ax,x(:, 1), x(:, 2), x(:, 3), 'x');
% Hide rulers and background color
ax.Color = [1 1 1 0];
ax.XAxis.Visible ='off';
ax.YAxis.Visible ='off';
ax.ZAxis.Visible ='off';
Оси, упорядоченные с помощью subplot
, можно манипулировать индивидуально.