Python,Matplotlib实现雨点图动画

关键点

  • win10安装ffmpeg
  • animation函数使用
  • update函数

win10安装ffmpeg

因为最后要将动画图保存为.mp4格式,要用到ffmpeg,去官网下载,我az下载的是windows64bit static版本的,下载后解压到软件安装常用路径,并将ffmpeg路径添加到环境变量(这个方法在最后没用,但还是添加一下)

animationa函数

准确来说是animation.FuncAnimation函数

常用参数:
animation.FuncAnimation(fig,func,frames,init_func,interval)
fig:matplotlib.figure.Figure
func:每一帧都被调用,函数的第一个参数就是下一个参数frames里的value
frames:iterable,可以是整数,整数的话等同于传递range(frames)

init_func:初始化函数,就是fig的最初设置
interval:Delay between frames in milliseconds. Defaults to 200.

update函数

这个函数涉及到每一帧变化所绘制图形里参数的变化,比如例程中的雨点大小,颜色,位置等(散点图scatter绘制),具体看代码

程序实现

最初找到了例程的基于BSD协议的,经过一些自己的修改,所以我也在代码中贴上该协议

# -----------------------------------------------------------------------------
# Copyright (c) 2015, Nicolas P. Rougier. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib import animation
import os#确定ffmpeg.exe的位置,试过加在环境变量里但依然提示找不到MovieWriter,最后这个方法解决了,在Python2.7版本路径名前面要声明编码是unicode的,而在Python3中有无均可,这是2.X和3.x版本的一个编码方面的区别
plt.rcParams['animation.ffmpeg_path'] = u"D:\\Applications\\ffmpeg-20170503-a75ef15-win64-static\\bin\\ffmpeg.exe"#这里改变当前工作路径,方便下面保存文件的时候自动保存到该路径下面
os.chdir("d:\\Files\\python\\matplotlib") # No toolbar
matplotlib.rcParams['toolbar'] = 'None'# New figure with white background
fig = plt.figure(figsize=(6,6), facecolor='white')# New axis over the whole figureand a 1:1 aspect ratio
# ax = fig.add_axes([0,0,1,1], frameon=False, aspect=1)
ax = fig.add_axes([0.005,0.005,0.990,0.990], frameon=True, aspect=1)# Number of ring
n = 50
size_min = 50
size_max = 50*50# Ring position ,圆环位置,范围在[0,1]之间
P = np.random.uniform(0,1,(n,2))# Ring colors环的颜色
C = np.ones((n,4)) * (0,1,0,1)#C = np.ones((n,3)) * (1,0,1)
# Alpha color channel goes from 0 (transparent) to 1 (opaque)
# 透明度,数值在[0,1]之间
C[:,2] = np.linspace(0,1,n)# Ring sizes环的大小,范围在[50,2500]
S = np.linspace(size_min, size_max, n)# Scatter plot
# 散点图绘制
scat = ax.scatter(P[:,0], P[:,1], s=S, lw = 0.5,edgecolors = C, facecolors='None')# Ensure limits are [0,1] and remove ticks
#保证x,y的范围在[0,1]之间,移除坐标轴标记
ax.set_xlim(0,1), ax.set_xticks([])
ax.set_ylim(0,1), ax.set_yticks([])def update(frame):global P, C, S# Every ring is made more transparent每个环变得更透明C[:,3] = np.maximum(0, C[:,3] - 1.0/n)# Each ring is made larger每个环都比原来的大S += (size_max - size_min) / n# Reset ring specific ring (relative to frame number)i = frame % 50   P[i] = np.random.uniform(0,1,2) # P[i] = P[i,:],同时改变了x,y两个位置的值S[i] = size_min #从最小的形状开始C[i,3] = 1      #设置透明度为1 # Update scatter object# 更新scatter绘图对象的属性,例如edgecolors,sizes,offsets等scat.set_edgecolors(C)  #设置边缘颜色scat.set_sizes(S)       #设置大小scat.set_offsets(P)     #设置偏置return scat,animate = FuncAnimation(fig, update, frames = 300,interval=70)#interval是每隔70毫秒更新一次,可以查看helpFFwriter = animation.FFMpegWriter(fps=20)   #frame per second帧每秒animate.save('rain.mp4', writer=FFwriter,dpi=360)#设置分辨率
plt.show()

生成的是mp4,把他转化成了文件很小的gif显示了一下效果,保存格式为gif的好像不行,没认真研究过,而且CSDN上传的GIF动图也不能超过2M,~坑

Python/Matplotlib实现雨点图动画相关推荐

  1. 用python画雨滴_Python使用Matplotlib实现雨点图动画效果的方法

    本文实例讲述了Python使用Matplotlib实现雨点图动画效果的方法.分享给大家供大家参考,具体如下: 关键点 win10安装ffmpeg animation函数使用 update函数 win1 ...

  2. Python matplotlib绘制雷达图

    Python matplotlib绘制雷达图 本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指 ...

  3. python+matplotlib对柿子图的彩色和灰色直方图统计

    python+matplotlib对柿子图的彩色和灰色直方图统计 前言 代码 有疑待查 参考链接 前言 最近在对柿子图统计时,遇到了np.histogram函数的参数bins的用法不理解,查找了大量资 ...

  4. python制作雷达图_如何利用Python matplotlib绘制雷达图

    本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指标,雷达图几乎随处可见,应用场景非常多. 一. ...

  5. 超详细的Python matplotlib 绘制动态图

    复习回顾 在matplotlib模块中我们前面学习绘制如折线.柱状.散点.直方图等静态图形.我们都知道在matplotlib模块主要有三层脚本层为用户提供快捷的绘制图形方法,美工层接收到脚本层的命令后 ...

  6. 不愧是摸鱼高手Python matplotlib 绘制频谱图都会,能怪老板不管

    复习回顾 matplotlib 是Python专门用来绘制渲染的模块,其底层主要分为脚本层.美工层和后端.脚本层为我们提供常见图形绘制如折线.柱状.直方.饼图.以往文章 这么详细的Python mat ...

  7. python matplotlib画折线图_python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...

  8. Python matplotlib 绘制三维图并修改样式

    问题描述 通过Python matplotlib绘制三维函数图,函数内容如下: 为了简化表达,对测试函数的维度做降维表达,从100维降到2维,这样就可以通过三维函数来表达了.样式上需要满足以下要求: ...

  9. 科学数据库Python——matplotlib画折线图

    matplotlib绘制折线图基础操作 matplotlib基础绘图 设置图片大小 保存到本地 调整x或者y轴刻度的间距 解决matplotlib的中文乱码问题 标题.x轴和y轴的描述信息 线条的样式 ...

  10. python matplotlib画折线图出现连线混乱_python使用matplotlib模块绘制多条折线图、散点图...

    今天想直观的展示一下数据就用到了matplotlib模块,之前都是一张图只有一条曲线,现在想同一个图片上绘制多条曲线来对比,实现很简单,具体如下: #!usr/bin/env python #enco ...

最新文章

  1. Top Competitors(连接查询)
  2. Filter过滤不了Action的问题
  3. 模型压缩案例-SSDYou only look once
  4. python xml转换键值对_Python 提取dict转换为xml/json/table并输出
  5. C++设计模式-访问者模式
  6. python3爬虫入门实例_10个python爬虫入门实例(小结)
  7. 北大教授证明黎曼猜想?但在前一天取消了
  8. 干货:手把手教你在音频分类DCASE2017比赛中夺冠
  9. 网易笔试题 寻找第K大
  10. 在 Notepad++ 运行 Closure Linter 来校验JS代码
  11. (五)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之word文件合并[支持多文件]
  12. DOM中的动态NodeList与静态NodeList
  13. Openresty宏观概述笔记
  14. Win10夜间模式无法关闭解决方法
  15. 实现一个简单的栅格系统
  16. 修复路径穿越、任意文件写入漏洞
  17. 手机怎么拍照翻译英文呢?这个翻译小技巧分享给你
  18. 有哪些可以下载大学教材的网站?
  19. 中国眼科光学仪器市场品牌竞争格局与销售价值分析报告2022版
  20. 进阶4·淘宝商品爬取与分析(selenium,网页元素无法定位的四个解决办法)

热门文章

  1. 自己对ajax的第一次上手被人说菜死还真是菜
  2. 银河麒麟高级服务器操作系统V10下载安装及安装docker
  3. 违反GPL协议赔偿50万,国内首例!
  4. 辣侃情恋男女的犀利段子
  5. ARC093 F Dark Horse——容斥
  6. 【容斥原理】(AtCoder Regular Contest 093 F) Dark Horse
  7. 为程序员提供一杯免费咖啡
  8. 有个空间,名叫 Gamma
  9. 孔雀东南飞$追加x5淘宝JS
  10. NTFS交换数据流隐藏文件