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

Linda Hamilton
Lepaskan: 2024-11-05 22:21:02
asal
314 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan