首頁 >後端開發 >Python教學 >如何建立顏色、大小和位置不斷變化的動畫散佈圖?

如何建立顏色、大小和位置不斷變化的動畫散佈圖?

Linda Hamilton
Linda Hamilton原創
2024-11-05 22:21:02322瀏覽

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

動畫散點圖:改變顏色、大小和位置

問題: 建立動畫散點圖,其中顏色、大小和位置點的數量根據給定的資料矩陣動態變化。

資料格式:

  • 資料:形狀為(ntime, npoint)的Numpy ndarray
  • x:具有代表x 座標的形狀(npoint)的Numpy ndarray
  • y:具有代表y 座標的形狀(npoint)的Numpy ndarray

目標: 使用下列功能對散佈圖進行動畫處理:

  • 透過更新scat.set_offsets(array) 更改點的位置,其中array 是x 和y 座標的二維數組。
  • 透過更新 scat.set_sizes(array) 更改點的大小,其中 array 是大小的一維數組。
  • 透過更新 scat.set_array(array) 更改點的顏色,其中 array 是一維數組要進行顏色映射的值的數量。

解決方案:

以下程式碼範本示範如何建立具有不斷變化的色彩、大小和位置的動畫散佈圖:

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

此程式碼片段提供如何透過更改顏色、大小和位置對散佈圖進行動畫處理的範例。您可以自訂資料產生和動畫參數以滿足您的特定要求。

以上是如何建立顏色、大小和位置不斷變化的動畫散佈圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn