python画简单图片-Python 画个图
先放上最后的结果图(数据画的有点丑,随便看看就好了):
功能描述:
这个脚本主要的作用就是监视指定文件夹中(示例中在脚本所在文件夹下)指定文件这里就是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 画个图相关推荐
- python画简单图片-Python绘制“高颜值”桑基图
请看以下图片: 相信许多小伙伴第一眼就会被它美丽的外表所吸引,由此引发一连串的惊叹: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 为了满足大家的好 ...
- python怎么画简单图片-python中简单易学的绘图:用turtle画太极图
为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...
- python怎么画简单图片-Python绘制简易的二维图像
大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...
- python装饰器使用教学,Python教程|简单上手Python中装饰器的使用
如何打造极简主义风格网站教程 .极简主义与其他设计风格<极简主义设计之美> 这篇文章的一部分是讲极简主义是如何与其他设计风格很好配合的.可以把极简主义当作一种属性,而它可以添加或结合其他. ...
- python怎么画简单图片-初学Python-简单的在图片上加文字
场景 在用户运营中,拉新是第一步.我们产品打算先再小范围试验一下效果,不动用开发哥哥,自己制作邀请海报. 没错,就是最简单的,邀请领奖励活动. UI妹妹把海报模版做出来,邀请码根据用户ID自行填上. ...
- python画简单花-Python竟能画这么漂亮的花,帅呆了(代码分享)
阅读本文大概需要3分钟 关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下. 趣味编程其实是最好的学习途径,回想十几年前我刚毕业的时候,第一份工作就给手机上写a ...
- python如何调用图片-python调用图片
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行 ...
- python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...
- 用python画漂亮图片-Python 竟能绘制如此酷炫的三维图
通常我们用 Python 绘制的都是二维平面图,但有时也需要绘制三维场景图,比如像下面这样的: 这些图怎么做出来呢?今天就来分享下如何一步步绘制出三维矢量(SVG)图. 八面体 我们先以下面这个八面体 ...
最新文章
- Educational Codeforces Round 54
- 比特币Cash Hard Fork辩论在压力测试后重新召开
- 【对比分析六】JavaScript中GET和POST的区别及使用场景
- SAP 730模糊查询时不可以输入连续的汉字问题解决方案
- 【物联网】OpenWrt编译出现Unable to find remote helper for 'https'问题
- Delphi编译指令说明
- 1.1 Machine learning: what and why?
- 【转载保存】Java丨jsoup网络爬虫登录得到cookie并带上cookie访问
- python进群_Manim-python 进群问题之解答
- SpringBoot--springboot启动类和controller的配置
- PHP中去除换行解决办法小结(PHP_EOL)
- java web js 创建文件夹_如何在web工程里用java代码用程序动态添加css,images,js等文件夹...
- java编写的视频网站实例_一个在线视频网站的java web 后端开发
- 群智能优化算法学习规划
- Processing创意编程(进阶篇)
- python storm连接mysql_Python ORM Storm 源码修改
- 【遗传算法GA】--计算函数最值(Python)
- 【python10个小实验】1. 画一个简单的三角形
- 浅谈 Java 中的排序
- 筛法求素数(C语言/C++)
热门文章
- 学习vue的双向数据绑定的原理
- web3.js(三)查询智能合约币数量(erc20)
- Xcode:dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib
- Angular-Ui-Router+ocLazyLoad动态加载脚本
- python写文件无法换行的问题
- Requests方法 -- 关联用例执行
- notepad++取消语法检测
- P2340 奶牛会展(状压dp)
- C# 二种方法控制系统音量/麦克风大小
- Tomcat8.0之源代码初体验