Uczę się, jak używać mplot3d do tworzenia ładnych wykresów danych 3D i do tej pory jestem całkiem zadowolony. W tej chwili próbuję zrobić małą animację obracającej się powierzchni. W tym celu muszę ustawić położenie kamery do projekcji 3D. Wydaje mi się, że to musi być możliwe, ponieważ powierzchnię można obracać za pomocą myszy podczas interaktywnego korzystania z matplotlib. Ale jak mogę to zrobić ze skryptu? Znalazłem wiele transformacji w mpl_toolkits.mplot3d.proj3d, ale nie mogłem się dowiedzieć, jak je wykorzystać do swoich celów i nie znalazłem żadnego przykładu na to, co próbuję zrobić.
python
matplotlib
mplot3d
Andreas Bleuler
źródło
źródło
%matplotlib notebook
Odpowiedzi:
„Położenie kamery” oznacza, że chcesz dopasować elewację i kąt azymutu, których używasz do oglądania wykresu 3D. Możesz to ustawić za pomocą
ax.view_init
. Użyłem poniższego skryptu, aby najpierw utworzyć działkę, a następnie określiłem dobrą elewację lubelev
z której wyświetlić moją działkę. Następnie dostosowałem kąt azymutu lubazim
zmieniłem pełne 360 stopni wokół wykresu, zapisując figurę w każdym wystąpieniu (i notując, który kąt azymutu, zapisując wykres). Aby uzyskać bardziej skomplikowaną panoramę kamery, możesz dostosować zarówno wysokość, jak i kąt, aby uzyskać pożądany efekt.źródło
ax.elev
iax.azim
. Mogłeś też po prostu napisaćax.azim = ii
lub nawetax.azim += 1
osiągnąć ten sam efekt.Przydatne byłoby zastosowanie pozycji kamery do nowego wykresu. Więc kreślę, a potem przesuwam wykres za pomocą myszy, zmieniając odległość. Następnie spróbuj odtworzyć widok z uwzględnieniem odległości na innym wykresie. Uważam, że axx.ax.get_axes () pobiera mi obiekt ze starymi plikami .azim i .elev.
W PYTHON ...
Później wykres 3d ...
EDYCJA 1 ... OK, położenie kamery to niewłaściwy sposób myślenia o wartości .dist. Jeździ na szczycie wszystkiego jako rodzaj hackey skalarny mnożnik dla całego wykresu.
Działa to w przypadku powiększania / powiększania widoku:
Późniejszy wykres ...
źródło