Maison >développement back-end >Tutoriel Python >Comment créer des nuages ​​de points animés avec des couleurs, des tailles et des positions changeantes ?

Comment créer des nuages ​​de points animés avec des couleurs, des tailles et des positions changeantes ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 22:21:02361parcourir

How to Create Animated Scatter Plots with Changing Colors, Sizes, and Positions?

Animation de nuages ​​de points : modification des couleurs, des tailles et des positions

Problème : Créer un nuage de points animé où les couleurs, les tailles et les positions des points changent dynamiquement en fonction d'une matrice de données donnée.

Format des données :

  • données : Numpy ndarray avec forme (ntime, npoint)
  • x : Numpy ndarray avec une forme (npoint) représentant les coordonnées x
  • y : Numpy ndarray avec une forme (npoint) représentant les coordonnées y

Objectif : Animez un nuage de points avec les fonctionnalités suivantes :

  • Modifiez les positions des points en mettant à jour scat.set_offsets(array), où array est un tableau 2D de coordonnées x et y.
  • Modifiez les tailles des points en mettant à jour scat.set_sizes(array), où array est un tableau 1D de tailles.
  • Changez les couleurs des points en mettant à jour scat.set_array(array), où array est un tableau 1D de valeurs à colorier.

Solution :

Voici un modèle de code qui montre comment créer un nuage de points animé avec des couleurs, des tailles et des positions changeantes. :

<code class="python">import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation

# Generate random data
numpoints = 50
x, y, s, c = next(data_stream()).T

# Create a figure and axes
fig, ax = plt.subplots()

# Create a scatter plot and set its initial data
scat = ax.scatter(x, y, c=c, s=s, vmin=0, vmax=1, cmap="jet", edgecolor="k")

# Initialize FuncAnimation
ani = animation.FuncAnimation(fig, update, interval=5, init_func=setup_plot, 
                                          blit=True)

# Setup plot
def setup_plot():
    ax.axis([-10, 10, -10, 10])
    return scat,

# Data stream generator
def data_stream():
    xy = (np.random.random((numpoints, 2))-0.5)*10
    s, c = np.random.random((numpoints, 2)).T
    while True:
        xy += 0.03 * (np.random.random((numpoints, 2)) - 0.5)
        s += 0.05 * (np.random.random(numpoints) - 0.5)
        c += 0.02 * (np.random.random(numpoints) - 0.5)
        yield np.c_[xy[:,0], xy[:,1], s, c]

# Update plot
def update(i):
    data = next(data_stream())
    scat.set_offsets(data[:, :2])
    scat.set_sizes(300 * abs(data[:, 2])**1.5 + 100)
    scat.set_array(data[:, 3])
    return scat,</code>

Cet extrait de code fournit un exemple de la façon d'animer un nuage de points avec des couleurs, des tailles et des positions changeantes. Vous pouvez personnaliser les paramètres de génération de données et d'animation en fonction de vos besoins spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn