Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencipta Plot Taburan Animasi dengan Warna, Saiz dan Kedudukan yang Berubah?

Bagaimana untuk Mencipta Plot Taburan Animasi dengan Warna, Saiz dan Kedudukan yang Berubah?

Linda Hamilton
Linda Hamiltonasal
2024-11-05 22:21:02315semak imbas

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

Menghidupkan Plot Serakan: Menukar Warna, Saiz dan Kedudukan

Masalah: Buat plot serakan animasi di mana warna, saiz dan kedudukan mata berubah secara dinamik berdasarkan matriks data yang diberikan.

Format Data:

  • data: Numpy ndarray dengan bentuk (ntime, npoint)
  • x: Numpy ndarray dengan bentuk (npoint) mewakili x-koordinat
  • y: Numpy ndarray dengan bentuk (npoint) mewakili y-koordinat

Objektif: Animasikan plot taburan dengan ciri berikut:

  • Tukar kedudukan titik dengan mengemas kini scat.set_offsets(array), dengan tatasusunan ialah tatasusunan 2D bagi koordinat x dan y.
  • Tukar saiz mata dengan mengemas kini scat.set_sizes(array), dengan tatasusunan ialah tatasusunan saiz 1D.
  • Tukar warna mata dengan mengemas kini scat.set_array(array), dengan tatasusunan ialah tatasusunan 1D daripada nilai untuk dipetakan warna.

Penyelesaian:

Berikut ialah templat kod yang menunjukkan cara mencipta plot serakan animasi dengan menukar warna, saiz dan kedudukan :

<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>

Coretan kod ini memberikan contoh cara menganimasikan plot taburan dengan menukar warna, saiz dan kedudukan. Anda boleh menyesuaikan penjanaan data dan parameter animasi agar sesuai dengan keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Plot Taburan Animasi dengan Warna, Saiz dan Kedudukan yang Berubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn