如何创建颜色、大小和位置不断变化的动画散点图?

Linda Hamilton
发布: 2024-11-05 22:21:02
原创
315 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板