专栏名称: EasyCharts
EasyCharts,易图表,我们将定期推送各种数据可视化与分析教程,包括Excel(Power BI)、Origin、Sigmaplot、GraphPad、R、Python、Matlab、Tableau、D3.js等。
目录
相关文章推荐
前端大全  ·  前端行情变了,差别真的挺大。。。 ·  昨天  
前端大全  ·  真的建议所有前端立即拿下软考(红利期) ·  3 天前  
前端大全  ·  React+AI 技术栈(2025 版) ·  3 天前  
奇舞精选  ·  从 DeepSeek 看25年前端的一个小趋势 ·  3 天前  
奇舞精选  ·  从 DeepSeek 看25年前端的一个小趋势 ·  3 天前  
51好读  ›  专栏  ›  EasyCharts

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

EasyCharts  · 公众号  · 前端  · 2020-01-05 13:16

正文

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

点击边框调出视频工具条



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 只生成了 2013 04 -2014 07 月数据绘制的面积图动画。如果需要调整生成的动画最大体积,需要更改参数 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-1 draw_barchart(year) 11-4-2 draw_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时的帮助。
最后,我觉得我还应该感谢的就是我自己。蓦然回首,四年弹指一挥间,从大学毕业到香港做学术研究这几年,经历过很多次的失望,也差点就抑郁,感谢我自己有一颗积极阳光乐观的心,终于守得云开见月明,如我所愿能坚持做我自己喜欢的事情。
小时候,读到课本里普希金说:“假如生活欺骗了你,不要悲伤,不要心急!忧郁的日子里需要镇静:相信吧,快乐的日子将会来临。”到现在才明白这确实是一条生活的潜规则。月有阴晴圆缺,人有悲欢离合。人不仅有趋利避害、喜甜厌苦的本能反应,还有趋欢避悲、求乐脱苦的本能调节。所以,悲伤的日子后面就是快乐的日子。
亲爱的朋友,也希望你能快乐每一天!







请到「今天看啥」查看全文