先放上最后的结果图(数据画的有点丑,随便看看就好了):

功能描述:

这个脚本主要的作用就是监视指定文件夹中(示例中在脚本所在文件夹下)指定文件这里就是csv文件中的数据做折线图;再将这一系列的图保存成一个gif动图。

数据展示:

注:由于在写脚本的时候没法在文件夹中自动生成相关文件,所以就自己手动编了4个test.csv格式的数据,数据结构如上图所示。图中的数据虽然有三行,但是用pandas导入进python后第一行将会被默认为数据框的列名;所以后面取出来能用的数据就只有两行而已,就是两个点,在上面的动图中就只有前面几帧是这个数据贡献的

脚本源码:

生成 png 文件脚本:

1 #!/usr/bin/python3

2 #-*- coding: utf-8 -*-

3 importpandas as pd4 importmatplotlib.pyplot as plt5 importos6 importtime7

8 #这个函数是用来画图的,循环的画图,这样显示的时候就是连续的动图状态

9 defplot(x1,y1,jj):10 xx =[]11 yy =[]12 for t inrange(len(x1)):13 xx.append(x1[t]) #取一个新的 x 值加入到 x 坐标数组中

14 yy.append(y1[t]) #取一个新的 y 值加入到 y 坐标数组中

15 ax.plot(xx, yy, c = 'b', marker='.', ms = 9) #画图

16 plt.pause(1) #暂停一秒

17 name = jj + "_" + str(t) + ".png"

18 plt.savefig(name) #保存为 png 格式的图片文件

19

20 #下面这些参数主要是对图等一系列参数进行规范化,这边可以使得后面的

21 #单个图除内容外边框大小等参数都是一样的

22 plt.close()23 fig=plt.figure()24 ax=fig.add_subplot(1,1,1)25 ax.axis("equal")26 plt.grid(True)27 plt.ion()28

29 #获得x, y数值用来画图部分

30 list_f = [] #用来保存文件夹下已有的 csv 文件名

31 x_0 = [0] #图上原点的 x 坐标

32 y_0 = [0] #图上原点的 y 坐标

33

34 whileTrue:35

36 list_temp =[]37 list_new =[]38 time.sleep(1) #正式使用时需改成适当的间隔时间

39

40 files = os.popen("ls").read() #获取 csv 文件名

41 for i infiles.splitlines():42 if os.path.splitext(i)[1] == ".csv":43 list_temp.append(i)44

45 #两个数组求差集,获得更新的文件名

46 list_new = list(set(list_temp) ^set(list_f))47 iflist_new:48 list_f = list_f +list_new49 #print(list_new)

50 for j inlist_new:51 x =[]52 y =[]53 data = pd.read_csv(j).T #读入新的 csv 文件

54 x = list(data.iloc[0].values) #取 X 值

55 y = list(data.iloc[1].values) #取 Y 值

56 x.insert(0,x_0[0]) #加上原点坐标

57 y.insert(0,y_0[0]) #同上

58 #print(x)

59 #print(y)

60 plot(x,y,j) #画图

61 x_0[0] = x[-1] #更新 X 中的初始坐标

62 y_0[0] = y[-1] #更新 Y 中的初始坐标

63 #print("X0=",x_0,"; Y0=",y_0)

这个脚本中还有一部分是在写的时候没有考虑到的内容,在真实情况下一个生成的 csv 文件很可能其中的数据内容还在一直的更新,所以建议可将脚本中的相关部分改成,当大于两个 csv 文件时才开始画第一个 csv 中的数据(这种方法是针对所运行的程序将依次产生多个 csv 数据文件时),或者读取 csv 文件中的数据行数,在达到一定行数后,便开始画图(此部分需要将上面的脚本进行较大的改动)。

生成 GIF 文件代码:

1 #-*- coding:utf-8 -*-

2 importimageio, os3

4 defgif(path):5

6 cmd = "ls" +path7 files =os.popen(cmd).read()8 list_temp =[]9

10 for i infiles.splitlines():11 if os.path.splitext(i)[1] == ".png":12 list_temp.append(i)13 list_temp.sort(key = lambda fi:os.path.getmtime(path +fi))14

15 '''

16 上述代码部分主要是得到一个名为list_temp的数组,储存该文件夹下所有17 png文件的文件名18 '''

19

20 #imageio 模块生成 gif 文件

21 images =[]22 for file_n inlist_temp:23 images.append(imageio.imread(file_n))24 imageio.mimsave('test.gif', images, duration=1)25

26 #运行上面的函数

27 if __name__ == '__main__':28 pathway = "/Users/xxxxx/" #文件夹地址

29 gif(pathway)30

31 #后面两句注释的语句属于可选部分,作用就是

32 #在生成 gif 文件后将原始 png 文件全部删除

33 #rm = "rm " + pathway + "*.png"

34 #os.system(rm)

上述两个脚本代码可以写在同一个文本中,只需要在监视画图的脚本中加入终止跳出机制即可。

上面两个脚本中可能还存在很多错误,欢迎指证。

未经许可,严禁转载 !!!

python画简单图片-Python 画个图相关推荐

  1. python画简单图片-Python绘制“高颜值”桑基图

    请看以下图片: 相信许多小伙伴第一眼就会被它美丽的外表所吸引,由此引发一连串的惊叹: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 为了满足大家的好 ...

  2. python怎么画简单图片-python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  3. python怎么画简单图片-Python绘制简易的二维图像

    大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...

  4. python装饰器使用教学,Python教程|简单上手Python中装饰器的使用

    如何打造极简主义风格网站教程 .极简主义与其他设计风格<极简主义设计之美> 这篇文章的一部分是讲极简主义是如何与其他设计风格很好配合的.可以把极简主义当作一种属性,而它可以添加或结合其他. ...

  5. python怎么画简单图片-初学Python-简单的在图片上加文字

    场景 在用户运营中,拉新是第一步.我们产品打算先再小范围试验一下效果,不动用开发哥哥,自己制作邀请海报. 没错,就是最简单的,邀请领奖励活动. UI妹妹把海报模版做出来,邀请码根据用户ID自行填上. ...

  6. python画简单花-Python竟能画这么漂亮的花,帅呆了(代码分享)

    阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...

  7. python如何调用图片-python调用图片

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行 ...

  8. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  9. 用python画漂亮图片-Python 竟能绘制如此酷炫的三维图

    通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...

最新文章

  1. Educational Codeforces Round 54
  2. 比特币Cash Hard Fork辩论在压力测试后重新召开
  3. 【对比分析六】JavaScript中GET和POST的区别及使用场景
  4. SAP 730模糊查询时不可以输入连续的汉字问题解决方案
  5. 【物联网】OpenWrt编译出现Unable to find remote helper for 'https'问题
  6. Delphi编译指令说明
  7. 1.1 Machine learning: what and why?
  8. 【转载保存】Java丨jsoup网络爬虫登录得到cookie并带上cookie访问
  9. python进群_Manim-python 进群问题之解答
  10. SpringBoot--springboot启动类和controller的配置
  11. PHP中去除换行解决办法小结(PHP_EOL)
  12. java web js 创建文件夹_如何在web工程里用java代码用程序动态添加css,images,js等文件夹...
  13. java编写的视频网站实例_一个在线视频网站的java web 后端开发
  14. 群智能优化算法学习规划
  15. Processing创意编程(进阶篇)
  16. python storm连接mysql_Python ORM Storm 源码修改
  17. 【遗传算法GA】--计算函数最值(Python)
  18. 【python10个小实验】1. 画一个简单的三角形
  19. 浅谈 Java 中的排序
  20. 筛法求素数(C语言/C++)

热门文章

  1. 学习vue的双向数据绑定的原理
  2. web3.js(三)查询智能合约币数量(erc20)
  3. Xcode:dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib
  4. Angular-Ui-Router+ocLazyLoad动态加载脚本
  5. python写文件无法换行的问题
  6. Requests方法 -- 关联用例执行
  7. notepad++取消语法检测
  8. P2340 奶牛会展(状压dp)
  9. C# 二种方法控制系统音量/麦克风大小
  10. Tomcat8.0之源代码初体验