Créer un gif 3D avec python3

J'ai trouvé un blog qui écrit de superbes 3D en Python

http://geoffboeing.com/2015/04/animated-3d-plots-python/

Ce blog est cool, alors achetez la version japonaise, créez-la et partagez-la!

L'essentiel est que ce blog seul ne fonctionnera pas avec Python 3. En premier lieu, images2gif est python2.

Ainsi, dès que vous googlez "images2gif python3", vous accéderez au Github suivant

https://github.com/isaacgerg/images2gif

Pour le moment, faites cela localement, python images2gif.py et espérons-le. Le Gif suivant peut être créé.

test.gif

Et intégrez-le à celui du blog ci-dessus!

Si vous avez déjà installé images2gif avec python3, supprimez-le avec pip uninstall images2gif ou quelque chose.

Ensuite, importez images2gif.py directement depuis Github ci-dessus.

Importez ce dont vous avez besoin (utilisez tel quel depuis le blog)

import pandas as pd, numpy as np, random
import matplotlib.pyplot as plt, matplotlib.cm as cm
from mpl_toolkits.mplot3d import Axes3D
import IPython.display as IPdisplay
import glob
from PIL import Image as PIL_Image
from images2gif import writeGif

Ecrire une image 3D dans Axes 3D (je l'ai écrite moi-même)

gif_file_name = '3d_test'

x = np.arange(-3, 3, 0.25)
y = np.arange(-3, 3, 0.25)

x = np.arange(-3, 3, 0.25)
y = np.arange(-3, 3, 0.25)
X, Y = np.meshgrid(x, y)
Z = np.sin(X)+ np.cos(Y)

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_wireframe(X, Y, Z)

Enregistrez 100 images sous différents angles (utilisez le blog tel quel)

ax.elev = 89.9
ax.azim = 270.1
ax.dist = 11.0

for n in range(100):
    if n >= 20 and n <= 22:
        ax.set_xlabel('')
        ax.set_ylabel('') #don't show axis labels while we move around, it looks weird
        ax.elev -= 0.5 #start by panning down slowly
    if n >= 23 and n <= 36:
        ax.elev -= 1.0 #pan down faster
    if n >= 37 and n <= 60:
        ax.elev -= 1.5
        ax.azim += 1.1 #pan down faster and start to rotate
    if n >= 61 and n <= 64:
        ax.elev -= 1.0
        ax.azim += 1.1 #pan down slower and rotate same speed
    if n >= 65 and n <= 73:
        ax.elev -= 0.5
        ax.azim += 1.1 #pan down slowly and rotate same speed
    if n >= 74 and n <= 76:
        ax.elev -= 0.2
        ax.azim += 0.5 #end by panning/rotating slowly to stopping position
    if n == 77:
        ax.set_xlabel('X')
        ax.set_ylabel('Y')
        ax.set_zlabel('Z')
    fig.suptitle('Practice')
    fig.savefig('images/' + 'img' + str(n).zfill(3) + '.png')

Enfin, créez un gif à partir de 100 images

images = [PIL_Image.open(image) for image in glob.glob('images/*.png')]
file_path_name = 'images/3d_test.gif'
writeGif(file_path_name, images, duration=0.1)

Maintenant, vous avez ce qui suit! (L'image est compressée et Gif ne fonctionne pas avec ...)

3d_test.gif

Il n'y a aucun moyen, alors créez une version à 5 images ↓

3d_test_sm.gif

Recommended Posts

Créer un gif 3D avec python3
Créer un diagramme de dispersion 3D avec SciPy + matplotlib (Python)
Créer un répertoire avec python
Créer un serveur local GIF animé avec Python + Flask
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
Créer un fichier CAO 2D ".dxf" avec python [ezdxf]
Créer une animation de tracé avec Python + Matplotlib
Créer Awaitable avec l'API Python / C
Analyse de la structure du squelette en trois dimensions avec Python
Résoudre ABC166 A ~ D avec Python
Créez un environnement virtuel avec Python!
Charger une image gif avec Python + OpenCV
FizzBuzz en Python3
Créer un décorateur de fonction Python avec Class
Grattage avec Python
Créez automatiquement la documentation de l'API Python avec Sphinx
Créez wordcloud à partir de votre tweet avec python3
Statistiques avec python
Grattage avec Python
Python avec Go
[Python] Créez un environnement virtuel avec Anaconda
Programme d'analyse des contraintes FEM 2D par Python
Créons un groupe gratuit avec Python
Créez rapidement un fichier Excel avec Python #python
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
Créer un environnement Python + uWSGI + Nginx avec Docker
Créer et décrypter du code César avec python
python commence par ()
Créez diverses vidéos Photoshop avec Python + OpenCV ③ Créez diverses vidéos Photoshop
avec syntaxe (Python)
Créer un fichier Excel avec Python + matrice de similarité
Résoudre AtCoder ABC168 avec python (A ~ D)
Créer un compteur de fréquence de mots avec Python 3.4
Bingo avec python
[Python] Créez rapidement une API avec Flask
Zundokokiyoshi avec python
Créez une application de mots anglais avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
Créer un fichier GIF en utilisant Pillow en Python
Créez des données de test comme ça avec Python (partie 1)
[Python] axe limite du graphe 3D avec Matplotlib
Créer un papier peint à pois avec la bibliothèque d'images Python
Créer un LINE BOT avec Minette pour Python
Créer un environnement virtuel avec conda avec Python
Créer une page qui se charge indéfiniment avec python
[Note] Créez une classe de fuseau horaire sur une ligne avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Résolvez A ~ D du codeur yuki 247 avec python
Créer une barre de couleurs avec Python + Qt (PySide)