Comment dessiner des graphiques 3D en utilisant Python et Plotly

Cet article est partagé par la communauté Huawei Cloud « Plotly Drawing 3D Graphics » par Lemony Hug.

Dans le domaine de la visualisation de données, les graphiques 3D constituent un outil puissant pour montrer les relations et structures complexes entre les données. Le langage Python dispose d'une riche bibliothèque de visualisation de données, parmi laquelle Plotly est un outil populaire qui permet de dessiner des graphiques tridimensionnels de haute qualité. Cet article explique comment utiliser Python et Plotly pour dessiner différents types de graphiques 3D et donne des exemples de code.

Préparation

Tout d’abord, assurez-vous que la bibliothèque Plotly est installée. Vous pouvez utiliser la commande pip pour installer :

pip installer plotly

Ensuite, nous utiliserons plotly.graph_objectsles modules de Plotly pour créer des graphiques 3D. Nous utiliserons également numpyla bibliothèque pour générer des exemples de données.

importer plotly.graph_objects au fur et à mesure
importer numpy en tant que np

Dessinez un nuage de points

Tout d’abord, nous allons dessiner un nuage de points simple. Supposons que nous ayons des données tridimensionnelles stockées dans x_data, y_dataet z_data.

# Générer des exemples de données
np.random.seed(42)
n_points = 100
x_data = np.random.rand(n_points)
y_data = np.random.rand(n_points)
z_data = np.random.rand(n_points)

#Créer un nuage de points
fig = go.Figure(data=[go.Scatter3d(x=x_data, y=y_data, z=z_data, mode='markers')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='Diagramme de points 3D')
fig.show()

Le code ci-dessus générera un simple nuage de points tridimensionnel montrant la distribution de points de données générés aléatoirement dans un espace tridimensionnel.

Dessiner un tracé de surface

Ensuite, nous allons dessiner un tracé de surface. Supposons que nous ayons une fonction f(x, y)et que nous voulions visualiser sa surface en trois dimensions.

# définir la fonction
déf f(x,y):
    retourner np.sin(x) * np.cos(y)

# Générer des données de grille
x_grid = np.linspace(0, 2*np.pi, 50)
y_grid = np.linspace(0, 2*np.pi, 50)
x_grid, y_grid = np.meshgrid(x_grid, y_grid)
z_grid = f(x_grid, y_grid)

#Créer un tracé de surface
fig = go.Figure(data=[go.Surface(z=z_grid, x=x_grid, y=y_grid)])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='Tracé de surface 3D')
fig.show()

Le code ci-dessus générera un tracé de surface 3D montrant la surface de la fonction.

Dessiner des wireframes

Enfin, nous dessinerons un wireframe montrant la continuité des données.

# Générer des données filaires
thêta = np.linspace(-4*np.pi, 4*np.pi, 100)
z_line = np.linspace(-2, 2, 100)
x_line = z_line * np.sin(thêta)
y_line = z_line * np.cos(thêta)

#Créer un filaire
fig = go.Figure(data=[go.Scatter3d(x=x_line, y=y_line, z=z_line, mode='lines')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='Tracé filaire 3D')
fig.show()

Le code ci-dessus générera un graphique 3D montrant le filaire.

À travers les exemples ci-dessus, nous avons montré comment utiliser Python et Plotly pour dessiner différents types de graphiques tridimensionnels. Vous pouvez personnaliser davantage ces graphiques en fonction de vos besoins et explorer les fonctionnalités plus riches de la bibliothèque Plotly. Bon complot !

Dessiner un graphique à barres 3D

En plus des nuages ​​de points, des tracés de surface et des tracés filaires, nous pouvons également dessiner des graphiques à barres 3D pour montrer les différences et les relations entre les données.

# Générer des exemples de données
catégories = ['A', 'B', 'C', 'D']
valeurs = np.random.randint(1, 10, size=(len(catégories), len(catégories)))
x_bar, y_bar = np.meshgrid(np.arange(len(catégories)), np.arange(len(catégories)))
x_bar = x_bar.flatten()
y_bar = y_bar.flatten()
z_bar = np.zeros_like(x_bar)

#Définissez la hauteur du graphique à barres
bar_heights = valeurs.flatten()

#Créer un graphique à barres 3D
fig = go.Figure(data=[go.Bar3d(x=x_bar, y=y_bar, z=z_bar, dx=1, dy=1, dz=bar_heights)])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='Graphique à barres 3D')
fig.show()

Le code ci-dessus générera un graphique à barres tridimensionnel montrant la relation entre les différentes catégories et valeurs.

Style graphique personnalisé

Plotly offre une multitude d'options de personnalisation pour ajuster le style, la mise en page et l'apparence des graphiques. Vous pouvez modifier la couleur, le type de ligne, l'étiquette et d'autres propriétés des graphiques selon vos besoins pour répondre à des besoins de visualisation spécifiques.

# Style graphique personnalisé
fig.update_traces(marker=dict(color='rgb(255, 127, 14)', taille=10),
                  selector=dict(mode='markers'))
fig.update_layout(scene=dict(xaxis=dict(backgroundcolor="rgb(200, 200, 230)",
                                       couleur de la grille = "blanc",
                                       showbackground=Vrai,
                                       zerolinecolor="blanc"),
                             yaxis=dict(backgroundcolor="rgb(230, 200,230)",
                                       couleur de la grille = "blanc",
                                       showbackground=Vrai,
                                       zerolinecolor="blanc"),
                             zaxis=dict(backgroundcolor="rgb(230, 230,200)",
                                       couleur de la grille = "blanc",
                                       showbackground=Vrai,
                                       zerolinecolor="blanc")),
                  title='Diagramme de points 3D personnalisé')
fig.show()

Graphiques 3D interactifs

Plotly prend également en charge la création de graphiques interactifs en trois dimensions, permettant aux utilisateurs d'explorer les données via l'interaction de la souris. Voici un exemple de nuage de points interactif :

# Créer un nuage de points interactif
fig = go.Figure(data=[go.Scatter3d(x=x_data, y=y_data, z=z_data, mode='markers')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='Diagramme de points 3D interactif')
fig.show()

En passant la souris sur les points de données, les utilisateurs peuvent afficher la valeur numérique spécifique de chaque point de données pour mieux comprendre les données.

Exporter des graphiques

Une fois que vous avez créé un graphique 3D qui vous convient, vous pouvez l'exporter sous forme d'image statique ou de fichier HTML interactif pour un partage et une présentation faciles. Plotly fournit une fonction d'exportation pratique, vous permettant d'enregistrer facilement des graphiques dans des fichiers locaux.

#Exporter des graphiques sous forme d'images statiques
fig.write_image("3d_plot.png")

# Exporter des graphiques sous forme de fichiers HTML interactifs
fig.write_html("3d_plot.html")

Explorez plus de fonctionnalités

En plus des fonctionnalités présentées dans cet article, Plotly fournit également de nombreuses autres fonctionnalités puissantes, telles que l'animation, les sprites, le contrôle de la caméra, etc., pour améliorer et personnaliser davantage vos graphiques tridimensionnels. Vous pouvez en apprendre davantage sur ces fonctionnalités et les appliquer à vos projets en consultant la documentation officielle ou en vous référant à des tutoriels en ligne.

Résumer

Grâce à cet article, nous avons appris à utiliser Python et la bibliothèque Plotly pour dessiner différents types de graphiques tridimensionnels, notamment des nuages ​​de points, des tracés de surface, des tracés filaires et des graphiques à barres. Nous avons appris les étapes de base et les exemples de code requis pour dessiner chaque type de graphique, et avons exploré comment personnaliser les styles de graphiques, créer des graphiques interactifs et exporter des graphiques sous forme d'images statiques ou de fichiers HTML interactifs. Avec ces techniques et fonctionnalités, nous pouvons facilement créer des graphiques 3D attrayants et utiles dans le domaine de la visualisation des données pour mieux comprendre et analyser les données. Que ce soit dans la recherche scientifique, les applications d'ingénierie ou l'analyse de données, les graphiques 3D sont des outils puissants qui nous aident à découvrir des modèles et des relations entre les données, et à présenter les résultats et les informations de la recherche. En explorant et en appliquant continuellement les fonctions des bibliothèques Python et Plotly, nous pouvons améliorer encore l'efficacité et l'efficience de la visualisation des données, apportant ainsi plus de valeur et de réalisations à notre travail et à nos projets.

 

Cliquez pour suivre et découvrir les nouvelles technologies de Huawei Cloud dès que possible~

 

L'équipe chinoise d'IA de Microsoft a fait ses valises et s'est rendue aux États-Unis, impliquant des centaines de personnes. Combien de revenus un projet open source inconnu peut-il rapporter ? Huawei a officiellement annoncé que la position de la station miroir open source de l'Université des sciences et technologies de Yu Huazhong a été ajustée. L'accès au réseau externe a été officiellement ouvert. Les fraudeurs ont utilisé TeamViewer pour transférer 3,98 millions ! Que doivent faire les fournisseurs de postes de travail à distance ? La première bibliothèque de visualisation frontale et fondateur du célèbre projet open source de Baidu, ECharts - un ancien employé d'une société open source bien connue qui "est allée à la mer" a annoncé la nouvelle : après avoir été interpellé par ses subordonnés, le technicien Le leader est devenu furieux et grossier et a licencié l'employée enceinte. OpenAI a envisagé d'autoriser l'IA à générer du contenu pornographique. Microsoft a déclaré à la Fondation Rust qu'elle avait fait un don de 1 million de dollars américains. Veuillez me dire quel est le rôle de time.sleep(6) ici. ?
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/4526289/blog/11148794
conseillé
Classement