如何制作散点图动画

2024-02-09

我正在尝试制作散点图的动画,其中点的颜色和大小在动画的不同阶段发生变化。对于数据,我有两个带有 x 值和 y 值的 numpy ndarray:

data.shape = (ntime, npoint)
x.shape = (npoint)
y.shape = (npoint)

现在我想绘制该类型的散点图

pylab.scatter(x,y,c=data[i,:])

并在索引上创建动画i。我该怎么做呢?


假设你有一个散点图,scat = ax.scatter(...), 然后你可以

  • 改变立场

          scat.set_offsets(array)
    

where array is a N x 2x 和 y 坐标的形状数组。

  • 改变尺寸

          scat.set_sizes(array)
    

where array是大小以点为单位的一维数组。

  • 改变颜色

          scat.set_array(array)
    

where array是一个将进行颜色映射的一维值数组。

这是一个使用的快速示例动画模块 https://matplotlib.org/api/animation_api.html.
它比实际需要的稍微复杂一些,但这应该为您提供一个框架来完成更奇特的事情。

(代码于 2019 年 4 月编辑,以与当前版本兼容。有关旧代码,请参阅修订记录 https://stackoverflow.com/questions/9401658/revisions)

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np

class AnimatedScatter(object):
    """An animated scatter plot using matplotlib.animations.FuncAnimation."""
    def __init__(self, numpoints=50):
        self.numpoints = numpoints
        self.stream = self.data_stream()

        # Setup the figure and axes...
        self.fig, self.ax = plt.subplots()
        # Then setup FuncAnimation.
        self.ani = animation.FuncAnimation(self.fig, self.update, interval=5, 
                                          init_func=self.setup_plot, blit=True)

    def setup_plot(self):
        """Initial drawing of the scatter plot."""
        x, y, s, c = next(self.stream).T
        self.scat = self.ax.scatter(x, y, c=c, s=s, vmin=0, vmax=1,
                                    cmap="jet", edgecolor="k")
        self.ax.axis([-10, 10, -10, 10])
        # For FuncAnimation's sake, we need to return the artist we'll be using
        # Note that it expects a sequence of artists, thus the trailing comma.
        return self.scat,

    def data_stream(self):
        """Generate a random walk (brownian motion). Data is scaled to produce
        a soft "flickering" effect."""
        xy = (np.random.random((self.numpoints, 2))-0.5)*10
        s, c = np.random.random((self.numpoints, 2)).T
        while True:
            xy += 0.03 * (np.random.random((self.numpoints, 2)) - 0.5)
            s += 0.05 * (np.random.random(self.numpoints) - 0.5)
            c += 0.02 * (np.random.random(self.numpoints) - 0.5)
            yield np.c_[xy[:,0], xy[:,1], s, c]

    def update(self, i):
        """Update the scatter plot."""
        data = next(self.stream)

        # Set x and y data...
        self.scat.set_offsets(data[:, :2])
        # Set sizes...
        self.scat.set_sizes(300 * abs(data[:, 2])**1.5 + 100)
        # Set colors..
        self.scat.set_array(data[:, 3])

        # We need to return the updated artist for FuncAnimation to draw..
        # Note that it expects a sequence of artists, thus the trailing comma.
        return self.scat,


if __name__ == '__main__':
    a = AnimatedScatter()
    plt.show()

如果您使用 OSX 并使用 OSX 后端,则需要更改blit=True to blit=False in the FuncAnimation下面初始化。 OSX 后端不完全支持位块传送。性能会受到影响,但该示例应该在禁用位块传输的 OSX 上正确运行。


对于一个仅更新颜色的更简单的示例,请查看以下内容:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation

def main():
    numframes = 100
    numpoints = 10
    color_data = np.random.random((numframes, numpoints))
    x, y, c = np.random.random((3, numpoints))

    fig = plt.figure()
    scat = plt.scatter(x, y, c=c, s=100)

    ani = animation.FuncAnimation(fig, update_plot, frames=range(numframes),
                                  fargs=(color_data, scat))
    plt.show()

def update_plot(i, data, scat):
    scat.set_array(data[i])
    return scat,

main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作散点图动画 的相关文章

  • 使用应用程序脚本将 MS Word 文件(保存在云端硬盘中)转换为 Google 文档

    我被某些事情困住了 找不到解决办法 有没有办法使用文件 url 或 id 将存储在 Google Drive 中的 MS Word 文件转换为 Google 文档 我目前有一个电子表格 其中包含文件的网址 或者 也可以使用 python 脚
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • 最小二乘法拟合直线 python 代码

    我有一个由 X 和 Y 坐标组成的散点图 我想使用直线的最小二乘拟合来获得最佳拟合线 直线最小二乘拟合是指 如果 x 1 y 1 x n y n 是测量数据对 则最佳直线是y A Bx 这是我的Python代码 number of poin
  • 类型错误:float() 参数必须是字符串或数字,而不是“列表”python

    我的 Python 有问题 这是我的代码 def calcola a input b float a 0 split c float a 0 split d float a 0 split e float a 0 split j float
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • 在Python中以交互方式执行多行语句

    我是 Python 世界的新手 这是我用 Python 编写的第一个程序 我来自 R 世界 所以这对我来说有点不直观 当我执行时 In 15 import math import random random random math sqrt
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • reStructuredText:README.rst 未在 PyPI 上解析

    我有一个托管在 Github 和 PyPI 上的 Python 项目 在 Github 上 https github com sloria TextBlob blob master README rst https github com s
  • 在 Linux 上的 Python 中使用受密码保护的 Excel 工作表

    问题很简单 我每周都会收到一堆受密码保护的 Excel 文件 我必须解析它们并使用 Python 将某些部分写入新文件 我得到了文件的密码 当在 Windows 上完成此操作时 处理起来很简单 我只需导入 win32com 并使用 clie
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • 用于多个窗口的 Tkinter 示例代码,为什么按钮无法正确加载?

    我正在编写一个程序 应该 按一下按钮即可打开一个窗口 按另一个按钮关闭新打开的窗口 我使用类 以便稍后可以将代码插入到更大的程序中 但是 我无法正确加载按钮 import tkinter as tk class Demo1 tk Frame
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • 在Python中连续解析文件

    我正在编写一个脚本 该脚本使用 HTTP 流量行解析文件 并取出域 目前仅将它们打印到屏幕上 我正在使用 httpry 将流量连续写入文件 这是我用来删除域名的脚本 usr bin python import re input open r
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • Pip 无法在 Windows 上安装 Twisted

    我正在尝试在 Windows 8 计算机上安装 Twisted 在 Twisted 官方网站上 只有一个 Windows 版的 Wheel 文件 https twistedmatrix com trac wiki Downloads htt
  • 在父类中访问子类变量

    我有一个父类和一个继承的子类 我想知道如何访问我的父类中的子类变量 我尝试了这个但失败了 class Parent object def init self print x class Child Parent x 1 x Child Er
  • 如何使用 Python 3 正确显示倒计时日期

    我正在尝试获取将显示的倒计时 基本上就像一个世界末日时钟哈哈 有人可以帮忙吗 import os import sys import time import datetime def timer endTime datetime datet

随机推荐

  • 如何使用 Objective-C 判断 iPhone 是否连接到 wifi 网络?

    在 Objective C iPhone 应用程序的上下文中 我需要能够判断 iPhone 是否已连接到 wifi 网络 并在可能的情况下侦听此状态的变化 有谁知道如何做到这一点 谢谢 加布伊 正如其他人提到的 可达性样本 https de
  • 在 Reactjs 中的 EsLint“react / jsx-props-no-spreading”错误中禁用

    安装 EsLint 后 我 出现的错误之一如下 禁止传播 propeslint react jsx props no spreading 我想在 EsLint 配置中创建一条规则来忽略此错误 但我发现的示例不起作用 这是创建全局异常的格式
  • 正则表达式 Windows 路径验证器

    我试图找到一个针对 Javascript 的 Windows 文件路径验证 但似乎没有一个能够满足我想要的要求 所以我决定自己构建它 要求如下 路径不能为空 可能以 x x 开头 后跟文件名 无文件 需要延期 文件名不能包含以下特殊字符 文
  • PHP:可以包含 file_exists() 说不存在的文件

    在我的脚本中 我设置了包含路径 以便应用程序的另一部分也可以包含文件 检查文件是否存在 然后包含它 但是 在我设置包含路径后 file exists 报告该文件不存在 但我仍然可以包含相同的文件
  • PHP 中静态属性的神奇 __get getter

    public static function get value 不起作用 即使它起作用 碰巧我已经需要神奇的 get getter 作为同一个类中的实例属性 这可能是一个是或否的问题 那么 有可能吗 不 这是不可能的 引用 get 的手册
  • 使用 DataContractJsonSerializer 生成轻量级 JSON

    我正在尝试使用 Net 3 5 中的 C 和 DataContractJsonSerializer 生成 JSON 问题是我不知道如何构建适合我需要的结果的结构 我尝试使用哈希表 列表对象和数组列表来重现 PHP 的关联数组 但无法弄清楚如
  • PHP和MySql中的上传大小问题

    我正在通过 PHP 将文件上传到 MySql DB 我能够上传最大 1MB 的文件 通过反复试验发现 大小超过 1 MB 的文件不会上传 PHP中mysql error 函数打印的MySql错误为 MySQL服务器消失了 有人可以帮我解决这
  • 如何从集合中获取用户自己的数据?

    如何从集合中获取用户自己的数据 登录成功后 auth login除承载令牌外 不返回用户相关信息 So 如何仅请求已登录用户的数据来自一个集合 在使用 GraphQL 时 如果我知道我的用户 ID 我可以通过这种方式过滤我的结果 但我不认为
  • Highcharts 热图带来意想不到的结果

    按照他们网站上的示例 我 大部分 成功地混合了两个示例来显示热图 http www highcharts com demo heatmap http www highcharts com demo heatmap http www high
  • Android Studio 抛出“无方法签名”错误,指向 build.gradle:app

    尝试通过 Android Studio 运行 Kotlin 应用程序后出现此错误 A problem occurred evaluating project app gt No signature of method build 4blex
  • 我可以在 PHP 中混合使用 MySQL API 吗?

    我已经在网上搜索过 到目前为止我所看到的是你可以使用mysql and mysqli 在一起的意思 or
  • 未定义:proto.ProtoPackageIsVersion3

    I get pb go 21 11 undefined proto ProtoPackageIsVersion3我想要版本 2 我安装了protoc from https github com google protobuf release
  • 使用 jQuery 选择带有冒号的 ID

    我正在为一个网站开发一个预先编写的模块 我需要使用 id 来定位一个元素test two 现在 这个元素中有一个冒号 因此 jQuery 可以理解地将 two 视为伪类 有没有办法用 jQuery 来定位这个元素 另外 无法更改 ID 相信
  • 使用 CGBitmapInfo 和 CGI​​mageAlphaInfo 进行按位运算

    我在执行按位运算时遇到问题CGImageAlphaInfo and CGBitmapInfo在斯威夫特 特别是 我不知道如何移植这个 Objective C 代码 bitmapInfo kCGBitmapAlphaInfoMask bitm
  • 在 Eclipse 编辑器中更改 java 关键字的颜色

    如何改变java关键字的颜色 就像 Eclipse java 编辑器中的 package public class 等 我讨厌默认的紫色 谢谢 在 Eclipse 中 窗口 gt 首选项 gt Java gt 编辑器 gt 语法着色 gt
  • 用于多标签分类的 keras 自定义指标

    我在用着sigmoid and binary crossentropy用于多标签分类 例如 标签为y true就好像 1 0 1 0 0 以及标签y pred就好像 0 8 0 3 0 9 0 0 如何设置 Keras 自定义度量函数 以便
  • 从 Date() 获取 Unix 时间戳

    我可以将 unix 时间戳转换为Date 对象通过把long值转化为Date 构造函数 例如 我可以将其作为new Date 1318762128031 但在那之后 我怎样才能从Date object getTime http docs o
  • 与 preg_match_all 和以重复字符结尾的模式重叠匹配

    我想做一些类似于问题的事情preg match all 如何获得 所有 组合 甚至重叠的 https stackoverflow com questions 22454032 preg match all how to get all co
  • 如何将“复合设计模式”与 Ninject 结合使用

    验证规则合约 public interface IValidationRule bool IsValid 具体验证规则 public class MyClass IValidationRule public bool IsValid ret
  • 如何制作散点图动画

    我正在尝试制作散点图的动画 其中点的颜色和大小在动画的不同阶段发生变化 对于数据 我有两个带有 x 值和 y 值的 numpy ndarray data shape ntime npoint x shape npoint y shape n