Я учусь использовать mplot3d для создания хороших графиков 3D-данных, и я до сих пор очень счастлив. На данный момент я пытаюсь сделать небольшую анимацию вращающейся поверхности. Для этого мне нужно установить положение камеры для 3D-проекции. Я предполагаю, что это должно быть возможно, так как поверхность может вращаться с помощью мыши при интерактивном использовании matplotlib. Но как я могу сделать это из сценария? Я нашел много преобразований в mpl_toolkits.mplot3d.proj3d, но не смог выяснить, как использовать их для своих целей, и я не нашел ни одного примера того, что я пытаюсь сделать.
python
matplotlib
mplot3d
Андреас Блеулер
источник
источник
%matplotlib notebook
Ответы:
«Положение камеры» звучит так, как будто вы хотите настроить высоту и угол азимута, которые вы используете для просмотра 3D-графика. Вы можете установить это с
ax.view_init
. Я использовал приведенный ниже сценарий, чтобы сначала создать график, затем я определил хорошую высоту илиelev
, из которой можно просмотреть мой график. Затем я отрегулировал угол азимута илиazim
, чтобы изменить все 360 градусов вокруг моего графика, сохраняя фигуру в каждом случае (и отмечая, какой угол азимута при сохранении графика). Для более сложного панорамирования камеры вы можете отрегулировать высоту и угол наклона для достижения желаемого эффекта.источник
ax.elev
иax.azim
свойства. Вы также можете просто написатьax.azim = ii
или дажеax.azim += 1
достичь того же эффекта.Было бы удобно применить положение камеры к новому графику. Поэтому я строю график, затем перемещаю график с помощью мыши, меняющей расстояние. Затем попробуйте скопировать вид, включая расстояние на другом участке. Я обнаружил, что axx.ax.get_axes () возвращает мне объект со старыми .azim и .elev.
В ПИТОНЕ ...
Позже 3d график ...
РЕДАКТИРОВАТЬ 1 ... ОК. Положение камеры - неправильное представление о значении .dist. Он работает поверх всего прочего как своего рода хакейский скалярный множитель для всего графа.
Это работает для увеличения / увеличения вида:
Позже График ...
источник