实时画图

import matplotlib.pyplot as plt

ax = [] # 定义一个 x 轴的空列表用来接收动态的数据

ay = [] # 定义一个 y 轴的空列表用来接收动态的数据

plt.ion() # 开启一个画图的窗口

for i in range(100): # 遍历0-99的值

ax.append(i) # 添加 i 到 x 轴的数据中

ay.append(i**2) # 添加 i 的平方到 y 轴的数据中

plt.clf() # 清除之前画的图

plt.plot(ax,ay) # 画出当前 ax 列表和 ay 列表中的值的图形

plt.pause(0.1) # 暂停一秒

plt.ioff() # 关闭画图的窗口

实时画图 效果图

补充知识:Python 绘图与可视化 matplotlib 动态条形图 bar

第一种办法

一种方法是每次都重新画,包括清除figure

def animate(fi):

bars=[]

if len(frames)>fi:

# axs.text(0.1,0.90,time_template%(time.time()-start_time),transform=axs.transAxes)#所以这样

time_text.set_text(time_template%(0.1*fi))#这个必须没有axs.cla()才行

# axs.cla()

axs.set_title("bubble_sort_visualization")

axs.set_xticks([])

axs.set_yticks([])

bars=axs.bar(list(range(Data.data_count)),#个数

[d.value for d in frames[fi]],#数据

1, #宽度

color=[d.color for d in frames[fi]]#颜色

).get_children()

return bars

anim=animation.FuncAnimation(fig,animate,frames=len(frames), interval=frame_interval,repeat=False)

这样效率很低,而且也有一些不可取的弊端,比如每次都需要重新设置xticks、假如figure上添加的有其他东西,这些东西也一并被clear了,还需要重新添加,比如text,或者labale。

第二种办法

可以像平时画线更新data那样来更新bar的高

"""

遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

"""

import matplotlib.pyplot as plt

import numpy as np

from matplotlib import animation

fig=plt.figure(1,figsize=(4,3))

ax=fig.add_subplot(111)

ax.set_title("bar_animate_test")

#ax.set_xticks([])注释了这个是能看到变化,要不看不到变化,不对,能看到变化,去了注释吧

#ax.set_yticks([])

ax.set_xlabel("xlable")

N=5

frames=50

x=np.arange(1,N+1)

collection=[]

collection.append([i for i in x])

for i in range(frames):

collection.append([ci+1 for ci in collection[i]])

print(collection)

xstd=[0,1,2,3,4]

bars=ax.bar(x,collection[0],0.30)

def animate(fi):

# collection=[i+1 for i in x]

ax.set_ylim(0,max(collection[fi])+3)#对于问题3,添加了这个

for rect ,yi in zip(bars,collection[fi]):

rect.set_height(yi)

# bars.set_height(collection)

return bars

anim=animation.FuncAnimation(fig,animate,frames=frames,interval=10,repeat=False)

plt.show()

问题

*)TypeError: ‘numpy.int32" object is not iterable

x=np.arange(1,N+1)
collection=[i for i in x]

#collection=[i for i in list(x)]#错误的认为是dtype的原因,将这里改成了list(x)

for i in range(frames):

collection.append([ci+1 for ci in collection[i]])#问题的原因是因为此时的collection还是一个一位数组,所以这个collection[i]是一个x里的一个数,并不是一个列表,我竟然还以为的dtype的原因,又改了

xstd=[0,1,2,3,4]

应该是

"""

遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

"""

collection=[]

collection.append([i for i in x])#成为二维数组

for i in range(frames):

collection.append([ci+1 for ci in collection[i]])

然后又出现了下面的问题:

*)TypeError: only size-1 arrays can be converted to Python scalars

Traceback (most recent call last):

File "forTest.py", line 22, in

bars=ax.bar(x,collection,0.30)

File "C:UsersAdministrator.SC-201605202132Envssortlibsite-packagesmatplotlib\__init__.py", line 1589, in inner

return func(ax, *map(sanitize_sequence, args), **kwargs)

File "C:UsersAdministrator.SC-201605202132Envssortlibsite-packagesmatplotlibaxes\_axes.py", line 2430, in bar

label="_nolegend_",

File "C:UsersAdministrator.SC-201605202132Envssortlibsite-packagesmatplotlibpatches.py", line 707, in __init__

Patch.__init__(self, **kwargs)

File "C:UsersAdministrator.SC-201605202132Envssortlibsite-packagesmatplotlibpatches.py", line 89, in __init__

self.set_linewidth(linewidth)

File "C:UsersAdministrator.SC-201605202132Envssortlibsite-packagesmatplotlibpatches.py", line 368, in set_linewidth

self._linewidth = float(w)

TypeError: only size-1 arrays can be converted to Python scalars

应该是传递的参数错误,仔细想了一下,在报错的代码行中,collection原来是没错的,因为原来是一维数组,现在变成二维了,改为

bars=ax.bar(x,collection[0],0.30)

好了

*)出现的问题,在上面的代码中,运行的时候不会画布的大小不会变,会又条形图溢出的情况,在animate()中添加了

"""

遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

"""

def animate(fi):

# collection=[i+1 for i in x]

ax.set_ylim(0,max(collection[fi])+3)#添加了这个

for rect ,yi in zip(bars,collection[fi]):

rect.set_height(yi)

# bars.set_height(collection)

return bars

别的属性

*)条形图是怎样控制间隔的:

是通过控制宽度

width=1,#没有间隔,每个条形图会紧挨着

*)errorbar:

是加一个横线,能通过xerr和yerr来调整方向

xstd=[0,1,2,3,4]

bars=ax.bar(x,collection,0.30,xerr=xstd)

以上这篇Python matplotlib实时画图案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。

python 画图 实时_Python matplotlib实时画图案例相关推荐

  1. python画图配色_python matplotlib包图像配色方案分享

    可选的配色方案: Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_ ...

  2. python最好用的画图工具_python Matplotlib.plot 超好用的画图技巧,总有一条用得到!...

    低阶通用模板 import numpy as np import matplotlib.pyplot as plt # 数据准备 x=np.linspace(0,10,num=30) y=np.sin ...

  3. python画图字体_python Matplotlib画图之调整字体大小的示例

    一张字体调整好的示例图: 字体大小就是 fontsize 参数 import matplotlib.pyplot as plt # 代码中的"..."代表省略的其他参数 ax = ...

  4. python读取输入流_Python读取实时数据流教程

    今天小编就为大家分享一篇Python读取实时数据流示例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 1.#coding:utf-8 chose = [ ('foo',1,2), ( ...

  5. python太阳代码_python实现实时太阳跟踪

    获取太阳的方位俯仰信息,需要知道观测点的时间及坐标(经度纬度). 以西安为例:经度109°,纬度34°:西安用的是北京时间,比世界时间UTC早八个小时. 获取信息. 需要ephem库和time库,前者 ...

  6. python远程聊天_python 实现实时聊天

    socket通讯必须有服务端和客户端 创建服务端: [第一步]:先创建一个socket类型的对象s: s=socket.socket(familly,type) family参数可以是AF_UNIX( ...

  7. python动态柱状图_Python+matplotlib绘制动态更新的柱状图

    Python+matplotlib绘制极坐标柱状图(南丁格尔玫瑰图) Python使用折线图.柱状图.热力图比较不同班级相同学号学生的成绩 问题描述:有些学校的学号最后两位是根据入学成绩顺序排的,那么 ...

  8. python系统字体_Python matplotlib修改默认字体的操作

    matplotlib库作为Python常用的数据可视化库,默认字体居然不支持中文字体,必须得吐槽一下~ 闲言少叙,开始正文 方法1:在plot中指定prop参数 使用matplotlib.font_m ...

  9. python 柱状图 居中_python matplotlib模块: bar(柱状图)

    plt模块的bar方法可以帮助我们绘制竖着的柱状图. 功能非常强大, 使用起来非常简单, 详细注释放在源码. 其中各种颜色的hex值可以从: 各种颜色hex值获取 源码: # coding=utf-8 ...

  10. python颜色表_Python+matplotlib绘制不同大小和颜色散点图实例

    具有不同标记颜色和大小的散点图演示. 演示结果: 实现代码: import numpy as np import matplotlib.pyplot as plt import matplotlib. ...

最新文章

  1. 字典树(前缀树)-Java实现
  2. many-to-many
  3. halcon算子盘点:Chapter 17:Tools
  4. nfa确定化 dfa最小化_深度学习中的优化:梯度下降,确定全局最优值或与之接近的局部最优值...
  5. 2014-02-20
  6. Nginx的events块指令的配置使用
  7. 战略分析思路——商业模式及沙盘推演
  8. LeetCode 2194. Excel 表中某个范围内的单元格
  9. 【算法】剑指 Offer 17. 打印从1到最大的n位数
  10. java图形界面_学习Java有什么用?Java的应用领域有哪些?
  11. Swift基础语法: 23 - Swift的Trailing闭包, 捕获, 闭包是引用类型
  12. Linux高性能网络:协程系列01-前言
  13. mysql数据同步到ElasticSearch中 之 logstash
  14. gps测量与数据处理第三版pdf_测量培训需要掌握哪些知识点呢?_东英时代何老师...
  15. html中什么字体的英文好看,英语字体有哪些?英语哪种字体最好看
  16. java 行政区划代码 民政部 json
  17. 国际市场营销知识框架图_留学热门 | 伦敦里士满大学市场营销本科专业
  18. mysql 单表 子查询_04 数据库入门学习-单表查询、多表查询、子查询(示例代码)...
  19. 手机编程html流星代码,如何使用html实现流星雨的效果(代码)
  20. DP4398:国产兼容替代CS4398立体声24位/192kHz音频解码芯片

热门文章

  1. 最新版WIN10安装教程(官方纯净版)(适用于新机以及旧机重装系统或升级系统)
  2. 计算机体系结构-第五章-指令级并行
  3. linux regulator接口驱动demo
  4. NLP领域的机器阅读理解方向的数据集总结
  5. 【Excle数据透视表】如何移动数据透视表的位置
  6. 爬虫:Python爬取煎蛋网图片
  7. HTML班级网页设计 基于HTML+CSS+JS制作我们的班级网页(web前端学生网页设计作品)
  8. Linux种修改用户主目录命令,usermod命令怎么修改用户主目录
  9. install Oracle JDK in Linux:安装oracle JDK in linux
  10. linux ssh keygen r,SSH的ssh-keygen命令基本用法详解