社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python如何绘制动态的比特币价格变化面积图

EasyCharts • 5 年前 • 767 次点击  

我们使用2013-2019年比特币(BTC)的价格数据绘制面积图动画,其HTML交互效果页面如图11-4-6所示。该数据集包括四列数据:年份(year)、城市名称(name)及所在的洲(group)、人口密度数值(value),转置的数据集如图11-4-7所示,包括20130428日起每天的开盘、最高、最低和收盘的价格。

点击边框调出视频工具条

  

11-4-6. 动态面积图的HTML交互页面效果图


11-4-7. 2013-2019年比特币(BTC)的价格数据集


具体实现代码


我们先导入数据集'BTC_price_history.csv',然后将date列转换成日期型数据。我们选择一天的最高和最低价的均值作为这一天比特币的价格Price。其具体代码如下:

我们设置图表每次展示Span_Date=180天的比特币价格数据,所以得到180天的数据集df_temp后,如果使用plt.fill_between()函数可以实现红色填充的面积图,如图11-4-8(a)所示;如果使用plt.bar()函数可以实现Spectral_r颜色映射的面积图,如图11-4-8(b)所示。图11-4-8的代码具体如下所示。

(a)单色填充.

 (b)渐变色填充

11-4-8. 静态面积图.

我们将上面的静态面积图代码整合成函数。当开始的日期天数据绘制面积图;当开始的日期≥时,就选择截止到当前日期的天数据绘制面积图。使用函数绘制的不同日期的面积图如图所示。

(a)Num_Date=60.


(b)Num_Date=150.

11-4-9. 不同日期Num_Date的面积图.

使用matplotlib包的animation.FuncAnimation()函数,调用draw_areachart(Num_Date)函数,其中输入的参数Num_Date = np.arange(0,df.shape[0],1),最后使用Ipython包的HTML()函数将动画转换成HTML页面的形式演示,其动画不同日期下的演示效果如图11-4-10所示。

其中,函数FuncAnimation(fig,func,frames,init_func,interval,blit)是绘制动图的主要函数,其参数如下(1) fig 表示绘制动图的画布名称(figure)(2)func为自定义绘图函数,如draw_barchart()函数;(3)frames为动画长度,一次循环包含的帧数,在函数运行时,其值会传递给函数draw_barchart (year)的形参“year”;(4) init_func为自定义开始帧,即初始化函数init,可省略;(5) interval表示更新频率,计量单位为ms(6) blit表示选择更新所有点,还是仅更新产生变化的点,应选择为True,但mac用户应选择False,否则无法显示。

另外,也可以使用animator.save(‘animation.gif’)或者animator.save(‘animation.mp4)导出gif或者mp4格式的动画。但是如果要导出mp4,需要先安装已经安装ffmpeg 或者mencoder

11-4-10. 面积图动画不同时间下的演示效果


但是由于动画默认的最大体积为20971520.0 bytes,所以图11-4-10只生成了201304-201407月数据绘制的面积图动画。如果需要调整生成的动画最大体积,需要更改参数animation.embed_limit:

ps:源代码与数据的Github下载地址:

https://github.com/EasyChart/Beautiful-Visualization-with-python



python数据可视化之美


本文来源即将出版的新书《python数据可视化之美》之动态图表的绘制,除此之外,书中还介绍了动态条形图和动态三维柱形地图的绘制。

    matplotlib包和plotnine包都可以实现动态数据的可视化演示。其中,在matplotlib包中,函数FuncAnimation(fig,func,frames,init_func,interval,blit)是绘制动图的主要函数,其参数如下:(1) fig 为绘制动图的画布名称; (2) func为自定义动画函数update(),比如11-4-1draw_barchart(year)11-4-2draw_areachart(Num_Date)(3) frames为动画长度,一次循环包含的帧数,在函数运行时,其值会传递给函数update(n)的形参“n”(4) init_func为自定义开始帧,即初始化函数,可省略;(5) interval为更新频率,以ms计算;(5) blit为选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显示。plotnine包的PlotnineAnimation()函数也可以绘制动态图表,但是对于不断更新的数据绘制动态图表时,动态图表生成速度很慢。


  


致谢与说明


自从9月份出版《R语言数据可视化之美》,很多读者问我能不能出一本python版的数据可视化教程。写书真的呕心沥血,但是在撰写过程中能系统性地总结所学的知识,可以查漏补缺,也是受益匪浅。R语言这本书是2017年5月断断续续写了1年半多,到今年5月份才修改出版。后来又花了3个多月增加了三章图表内容
所谓“大道相通”,不同软件的数据可视化原理都是相通的。python数据可视化这本书就是2018年对照着R语言那本书翻译而成。所以亲爱的读者请不必诧异于、我现在这么快就撰写完成《python数据可视化之美》。在这里,首先要感谢我的读者,感谢你们对我的支持与包容。也非常感谢我的大学好友金伟(现为职腾讯高级研究员)引导我入门python,也感谢香港理工大学的姚鹏鹏博士、清华大学的赵建树博士对我在学习python时的帮助。
最后,我觉得我还应该感谢的就是我自己。蓦然回首,四年弹指一挥间,从大学毕业到香港做学术研究这几年,经历过很多次的失望,也差点就抑郁,感谢我自己有一颗积极阳光乐观的心,终于守得云开见月明,如我所愿能坚持做我自己喜欢的事情。
小时候,读到课本里普希金说:“假如生活欺骗了你,不要悲伤,不要心急!忧郁的日子里需要镇静:相信吧,快乐的日子将会来临。”到现在才明白这确实是一条生活的潜规则。月有阴晴圆缺,人有悲欢离合。人不仅有趋利避害、喜甜厌苦的本能反应,还有趋欢避悲、求乐脱苦的本能调节。所以,悲伤的日子后面就是快乐的日子。
亲爱的朋友,也希望你能快乐每一天!

如需联系EasyCharts团队

请加微信:EasyCharts

《R语言数据可视化之美》增强版


增强版配套源代码下载地址

Github

https://github.com/EasyChart/Beautiful-Visualization-with-R

【书籍推荐】《R语言数据可视化之美》
【书籍推荐】《Excel 数据之美》

【手册获取】  国内首款-数据可视化参考手册

【网易云课堂】  Excel 商业图表修炼秘笈之基础篇

【文章汇总】 EasyCharts文章汇总
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50914
 
767 次点击