用Python画图

Python018

用Python画图,第1张

今天开始琢磨用Python画图,没使用之前是一脸懵的,我使用的开发环境是Pycharm,这个输出的是一行行命令,这个图画在哪里呢? 搜索之后发现,它会弹出一个对话框,然后就开始画了,比如下图第一个常用的库是Turtle,它是Python语言中一个很流行的绘制图像的函数库,这个词的意思就是乌龟,你可以想象下一个小乌龟在一个x和y轴的平面坐标系里,从原点开始根据指令控制,爬行出来就是绘制的图形了。   它最常用的指令就是旋转和移动,比如画个圆,就是绕着圆心移动;再比如上图这个怎么画呢,其实主要就两个命令: turtle.forward(200) turtle.left(170) 第一个命令是移动200个单位并画出来轨迹 第二个命令是画笔顺时针转170度,注意此时并没有移动,只是转角度 然后呢? 循环重复就画出来这个图了 好玩吧。 有需要仔细研究的可以看下这篇文章 https://blog.csdn.net/zengxiantao1994/article/details/76588580 ,这个牛人最后用这个库画个移动的钟表,太赞了。Turtle虽好玩,但是我想要的是我给定数据,然后让它画图,这里就找到另一个常用的画图的库了。 Matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。 使用起来也挺简单, 首先import matplotlib.pyplot as plt 导入画图的图。 然后给定x和y,用这个命令plt.plot(x, y)就能画图了,接着用plt.show()就可以把图形展示出来。 接着就是各种完善,比如加标题,设定x轴和y轴标签,范围,颜色,网格等等,在 https://blog.csdn.net/guoziqing506/article/details/78975150 这篇文章里介绍的很详细。 现在互联网的好处就是你需要什么内容,基本上都能搜索出来,而且还是免费的。我为什么要研究这个呢?当然是为了用,比如我把比特币的曲线自己画出来可好? 假设现在有个数据csv文件,一列是日期,另一列是比特币的价格,那用这个命令画下: 这两列数据读到pandas中,日期为df['time']列,比特币价格为df['ini'],那我只要使用如下命令 plt.plot(df['time'], df['ini']) plt.show() 就能得到如下图:自己画的是不是很香,哈哈! 然后呢,我在上篇文章 https://www.jianshu.com/p/d4013d8a73de 中介绍过求Ahr999指数,那可不可以也放到这张图中呢?不就是加一条命令嘛 plt.plot(df['time'], df['Ahr999']) 图形如下:但是,Ahr999指数怎么就一条线不动啊, 原来两个Y轴不一致,显示出来太怪了,需要用多Y轴,问题来了。 继续谷歌一下,把第二个Y轴放右边就行了,不过呢得使用多图,重新绘制 fig = plt.figure() # 多图 ax1 = fig.add_subplot(111) ax1.plot(df['time'], df['ini'], label="BTC price")  # 绘制第一个图比特币价格 ax1.set_ylabel('BTC price') # 加上标签# 第二个直接对称就行了 ax2 = ax1.twinx()# 在右边增加一个Y轴 ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999")  # 绘制第二个图Ahr999指数,红色 ax2.set_ylim([0, 50])# 设定第二个Y轴范围 ax2.set_ylabel('ahr999')plt.grid(color="k", linestyle=":")# 网格 fig.legend(loc="center")#图例 plt.show() 跑起来看看效果,虽然丑了点,但终于跑通了。这样就可以把所有指数都绘制到一张图中,等等,三个甚至多个Y轴怎么加?这又是一个问题,留给爱思考爱学习的你。 有了自己的数据,建立自己的各个指数,然后再放到图形界面中,同时针对异常情况再自动进行提醒,比如要抄底了,要卖出了,用程序做出自己的晴雨表。

无意中从今日头条中看到的一篇文章,可以生成简单的图表。据说一些大数据开发们也是经常用类似的图表库,毕竟有现成的,改造下就行,谁会去自己造轮子呢。pyecharts是什么? pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒, pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图 。使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。 安装很简单:pip install pyecharts 如需使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可,同时兼容 Python2 和 Python3 的 Jupyter Notebook 环境。所有图表均可正常显示,与浏览器一致的交互体验,简直不要太强大。参考自pyecharts官方文档: http://pyecharts.org首先开始来绘制你的第一个图表使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可 add() 主要方法,用于添加图表的数据和设置各种配置项 render() 默认将会在根目录下生成一个 render.html 的文件,文件用浏览器打开。使用主题自 0.5.2+ 起,pyecharts 支持更换主体色系 使用 pyecharts-snapshot 插件 如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用该插件请确保你的系统上已经安装了 Nodejs 环境。 安装 phantomjs $ npm install -g phantomjs-prebuilt 安装 pyecharts-snapshot $ pip install pyecharts-snapshot 调用 render 方法 bar.render(path='snapshot.png') 文件结尾可以为 svg/jpeg/png/pdf/gif。请注意,svg 文件需要你在初始化 bar 的时候设置 renderer='svg'。 图形绘制过程 基本上所有的图表类型都是这样绘制的: chart_name = Type() 初始化具体类型图表。 add() 添加数据及配置项。 render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。 add() 数据一般为两个列表(长度一致)。如果你的数据是字典或者是带元组的字典。可利用 cast() 方法转换。 多次显示图表 从 v0.4.0+ 开始,pyecharts 重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表。如果使是 Numpy 或者 Pandas,可以参考这个示例当然你也可以采用更加酷炫的方式,使用 Jupyter Notebook 来展示图表,matplotlib 有的,pyecharts 也会有的Note: 从 v0.1.9.2 版本开始,废弃 render_notebook() 方法,现已采用更加  pythonic  的做法。直接调用本身实例就可以了。 比如这样 还有这样如果使用的是自定义类,直接调用自定义类示例即可图表配置 图形初始化 通用配置项 xyAxis:平面直角坐标系中的 x、y 轴。(Line、Bar、Scatter、EffectScatter、Kline) dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot) legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。 label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。 lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel) grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D) axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D) visualMap:是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道) markLine&markPoint:图形标记组件,用于标记指定的特殊数据,有标记线和标记点两种。(Bar、Line、Kline) tooltip:提示框组件,用于移动或点击鼠标时弹出数据内容 toolbox:右侧实用工具箱图表详细Bar(柱状图/条形图) Bar3D(3D 柱状图) Boxplot(箱形图) EffectScatter(带有涟漪特效动画的散点图) Funnel(漏斗图) Gauge(仪表盘) Geo(地理坐标系) GeoLines(地理坐标系线图) Graph(关系图) HeatMap(热力图) Kline/Candlestick(K线图) Line(折线/面积图) Line3D(3D 折线图) Liquid(水球图) Map(地图) Parallel(平行坐标系) Pie(饼图) Polar(极坐标系) Radar(雷达图) Sankey(桑基图) Scatter(散点图) Scatter3D(3D 散点图) ThemeRiver(主题河流图) TreeMap(矩形树图) WordCloud(词云图) 用户自定义 Grid 类:并行显示多张图 Overlap 类:结合不同类型图表叠加画在同张图上 Page 类:同一网页按顺序展示多图 Timeline 类:提供时间线轮播多张图 统一风格注:pyecharts v0.3.2以后,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。地图文件被分成了三个 Python 包,分别为: 全球国家地图: echarts-countries-pypkg 中国省级地图: echarts-china-provinces-pypkg 中国市级地图: echarts-china-cities-pypkg 直接使用python的pip安装但是这里大家一定要注意,安装完地图包以后一定要重启jupyter notebook,不然是无法显示地图的。 显示如下:总得来说,这是一个非常强大的可视化库,既可以集成在flask、Django开发中,也可以在做数据分析的时候单独使用,实在是居家旅行的必备神器啊