我的Raspberry Pi附带了许多传感器;我使用TCP每秒两次将数据发送到我的PC.我想使用matplotlib连续绘制这些值.

我目前使用的方法似乎效率低下(我正在清理子图并每次重绘它)并且有一些不良缺点(每次都会重新调整比例;我希望它保持在0.0 – 5.0之间).我知道有一种方法可以做到这一点,而不必清除和重绘,但似乎无法搞清楚.以下是我目前的代码:

import socket

import sys

import time

from matplotlib import pyplot as plt

# Create a TCP/IP socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect the socket to the port where the server is listening

server_address = ('192.168.0.10', 10000)

print >>sys.stderr, 'connecting to %s port %s' % server_address

sock.connect(server_address)

# Initial setup for the bar plot

plt.ion()

fig = plt.figure()

ax = fig.add_subplot(1,1,1)

x = [1,2,3]

labels = ['FSR', 'Tilt', 'IR']

ax.set_xticklabels(labels)

y = [5.0,5.0,5.0]

ax.bar(x,y)

fig.autofmt_xdate()

plt.draw()

#Grab and continuously plot sensor values

try:

for i in range(300):

amount_received = 0

amount_expected = len("0.00,0.00,0.00")

# Receive data from RasPi

while amount_received < amount_expected:

data = sock.recv(14)

amount_received += len(data)

print >>sys.stderr, 'received "%s"' % data

# Plot received data

y = [float(datum) for datum in data.split(',')]

ax.clear()

ax.bar(x,y)

plt.draw()

time.sleep(0.5)

#Close the socket

finally:

print >>sys.stderr, 'closing socket'

sock.close()

解决方法:

你可以使用animation.FuncAnimation.

绘制一次条形图并保存返回值,这是一组Rects:

rects = plt.bar(range(N), x, align='center')

然后,要更改条形的高度,请调用rect.set_height:

for rect, h in zip(rects, x):

rect.set_height(h)

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.animation as animation

def animate(frameno):

x = mu + sigma * np.random.randn(N)

n, _ = np.histogram(x, bins, normed=True)

for rect, h in zip(patches, n):

rect.set_height(h)

return patches

N, mu, sigma = 10000, 100, 15

fig, ax = plt.subplots()

x = mu + sigma * np.random.randn(N)

n, bins, patches = plt.hist(x, 50, normed=1, facecolor='green', alpha=0.75)

frames = 100

ani = animation.FuncAnimation(fig, animate, blit=True, interval=0,

frames=frames,

repeat=False)

plt.show()

标签:python,matplotlib

来源: https://codeday.me/bug/20190923/1813809.html

python制作动态条形图-python – 动态更新matplotlib中的条形图相关推荐

  1. 教你如何用python制作黑板模拟器 python 项目小发明 【安安教具】-【工具】-【黑板】模拟器

    黑板模拟器是一个多线程控制尝试,需要做到通过tkinter实现对鼠标的控制和监督.鼠标在移动时会有一个线程来检测鼠标的位置,计算窗口的位置,计算出鼠标在窗口中的位置,结合canvas画布实现对黑板的涂 ...

  2. 如何用python制作温度计模拟器 python项目小发明 【安安教具】-【物理】-【温度计】模拟器

    温度计测量水温的过程要满足如下条件: 1.不能碰烧杯底. 2.不能碰烧杯壁. 设计一款动手实践上面过程的软件,就是接下来要完成的~ 我们先看一下效果: 如何用python制作温度计模拟器 python ...

  3. 如何利用Python制作可以动的动态图表。

    来源:机器之心 原文链接:https://towardsdatascience.com/learn-how-to-create-animated-graphs-in-python-fce780421a ...

  4. python绘制pr曲线图_如何利用Python制作可以动的动态图表。

    来源:机器之心 原文链接:https://towardsdatascience.com/learn-how-to-create-animated-graphs-in-python-fce780421a ...

  5. python 制作gif-利用Python如何制作好玩的GIF动图详解

    前言 之前我们分享过用Python进行可视化的9种常见方式.其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表. 假如电脑上没有 ...

  6. python绘图背景透明_如何在 Matplotlib 中更改绘图背景

    介绍Matplotlib是Python中使用最广泛的数据可视化库之一.无论是简单还是复杂的可视化项目,它都是大多数人的首选库.在本教程中,我们将研究如何在Matplotlib中更改绘图的背景.导入数据 ...

  7. 教你如何用python制作三角形模拟器 python项目小发明 【安安教具】-【数学】-【三角形】模拟器

    三角形的三个点互相连接组成了一个平面图形,我们如何用python制作一个可以展示各种三角形的软件呢? 我们先看看效果: 这个东西要如何使用呢?我们看一下视频: 三角形模拟器 可以看到,控制三角形的三个 ...

  8. python高逼格动态图_40行Python制作超炫酷动态排序图,有了它高逼格PPT再也不愁!...

    前言 最近,这种动态排序条形图视频超级火,如下图: 具体来说,这种图可以叫:Bar Chart Race,有什么国家GDP的.某某沉浮史等等,为了符合公众号的身份属性,我们为大家制作了这个较为简单的可 ...

  9. 使用Python制作跳舞小熊的动态二维

    首先,我们需要在终端安装Python的第三方库pip install myqr,否则直接运行会报错 ModuleNotFoundError: No module named 'MyQR' 然后前期工作 ...

最新文章

  1. 架构整洁之道学习笔记
  2. 01 | 顶层设计:微服务生态与 Spring Cloud Alibaba
  3. 介绍一个办法查TREX search的log
  4. 将一句话的单词进行倒置,标点符号不倒换。比如一句话:“i love you.”倒换后变为you. love i
  5. JavaFX官方教程(六)之带有JavaFX CSS的花式表单
  6. 求1+2+......+100的和
  7. Linux惊群效应详解(最详细的了吧)
  8. 哈佛推出这款PyTorch工具包,10行代码训练“AI药神”模型
  9. linux静态和动态路由英文,静态路由和动态路由的特点
  10. 如何在电脑上搭建一个私服,实现maven项目的上传和下载?
  11. Ant-编译构建(1)-HelloWorld
  12. Mathematica处理高斯光束的分布图像
  13. php网页代码字体大小,HTML网页字体大小的设置
  14. 动漫制作都用html5吗,怎么制作h5动画?
  15. 【限时删除】一个惊艳的神器,可全网爬取各种资源..........
  16. 终于搞定了stackoverflow的富文本编辑器pagedown
  17. MAE源代码理解 part1 : 调试理解法
  18. 陌陌6.0核心诉求:改变看脸社交
  19. srcollTop、clientHeight、scrollHeight详解
  20. go 调用winapi_Go调用Window SendARP() 方法

热门文章

  1. 【java的多态性】
  2. C++构造函数与析构函数
  3. Linux 集群时钟同步
  4. 关于骨骼动画及微软示例Skinned Mesh的解析
  5. JavaScript验证时间格式
  6. Java开发环境配置——Tomcat
  7. [Redux-Observable Unit Testing] Mocking an ajax request when testing epics
  8. 20170728上课笔记
  9. BZOJ4569: [Scoi2016]萌萌哒
  10. 2016.5.57—— Remove Duplicates from Sorted List