效果预览

配上动感的音乐感觉就是不一样啊,要达到上述效果除了核心的Matplotlib绘图外,其他工具和上篇推文 Hans Rosling Charts Matplotlib 绘制 所使用的工具一样啊。下面将分以下几个部分对制作过程进行介绍。

01. 引言

动态曲线图不同于动态气泡图,它可以查看部分指标在一段时间内的变化趋势,本期推文将推出动态曲线图的 Matplotlib 绘制过程,核心过程为 折线图 和 散点图 的绘制,详细过程如下:

02. 数据处理

由于需要查某些指标随时间的变化趋势,可将数据处理成如下形式(部分):

图表中的 china、usa、japan 等变量可以结合自己的实际需求进行更改,而 time 列则是时间变化。上述数据为本次绘制动态曲线图所需数据,即从 gapminder 网站下载的平均个人收入(Income per person)数据整理而成,处理代码主要如下:

这里 eq(nation) 操作为提取自己所需数据,最后通过 pandas 的 concat() 操纵进行提取数据合并即可。

03. 数据可视化

动态图表的绘制主要在于折线图和散点图的绘制,我们采用的依旧还是面向对象式绘图方式,这里建议绘制较为复杂的图表时多采用此方法进行绘制。完整绘图过程如下:

绘图的核心代码(以china为例)主要在第16-24行,详细解释如下:

idx = data_test.time

折线图:

ax.plot( idx, data_test['china'],color = '#FF5872',lw = 4)#折线图

其中,x 和 y 参数分别设置为数据的 time 列和 china 列,color 和线宽 lw 属性则是为了美化折线图。

散点图:

ax.scatter(idx.tolist()[-1],data_test['china'].tolist()[-1],color='#FF5872',edgecolor ='black',s = 280,lw = 2.5,zorder =4)#散点图

散点图的绘制则需知道我们只需要绘制最后一个散点,即获取最后一个数据,因此scatter的x,y均有[-1]的索引,当然,我们需在之前使用tolist()方法转变成数据列表形式,填充颜色 color、散点边框颜色 edgecolor、散点大小 s、和线宽 lw 均可根据自己需要进行定制化设置。这里需要注意的是zorder属性的设置,这里设置zorder=4,表示散点图绘制在折线图之后,即散点图压在折线图之上,使绘图更加美观。

文本(国家名):

ax.text(idx.tolist()[-1]+5,data_test['china'].tolist()[-1]-250,'china',size=15,c= '#FF5872',va='top',ha='left',fontweight = 'bold')#国家名

这里的 x 和 y 属性则是根据实际情况进行慢慢调试 ,其他的属性则是美化图表使用。

文本(数值):

ax.text(idx.tolist()[-1]+5,data_test['china'].tolist()[-1]-250,'china',size=15,c= '#FF5872',va='top',ha='left',fontweight = 'bold')#国家名

由于数据较大,这里

':{:,.0f}'.format(data_test['china'].tolist()[-1])对文本进行格式化操作,其他属性则根据自己需求进行设置即可。

部分详细解释如下:

  •  77-84 行则是添加位置固定的文本内容,设置 transform = ax.transAxes 则使文本位置不随数据变化而变动。这里需要指出的是,一般的绘图过程,固定文本一般都是在图表的刻度、轴等属性设置结束后再进行添加,这点则需要注意,好的绘图习惯可以大大减少绘图时间哦

  • 第 66-71 行则是自定义 y 轴的刻度比例范围,由于,较早年份的数据较为集中,使图表绘制集中在一块,影响美观,特经此过程进行设置,而这也是 matplotlib 3.1 版本新添加的内容。

  • 第 53 行使用 ax.axvline() 为动态图表添加一条推进线。

  • 第 54-64 行则是对图表刻度、轴脊等 属性进设置。

  • 第 75 行采用ax.yaxis.set_major_formatter(ticker.StrMethodFormatter('{x:,.0f}'))定制化刻度标签形式,此方法对绘制定制化的刻度标签非常有用,希望感兴趣的同学们可以多看看官网的教程。

  • 第 86 行 ax.set_axisbelow(True) 设置网格线等属性位于图表图层之下。

下面给出一年份数据绘制的曲线图结果:

备注:要想生成这种暗黑背景风格的图表,则可通过以下设置完成:

#设置画布figure颜色
plt.figure(facecolor='#1D1E23',edgecolor='#1D1E23')
#对Axis进行背景颜色设置
ax.set_facecolor('#373E4B')

04. 总结

Matplotlib绘制动态曲线图较动态气泡图而言,绘制过程较为简单,主要就是折线图和散点图的配合使用,其他的就是图表属性的定制化设置了,个人能力有限,发现错误的同学可以留言告知哈~~

各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)
推荐阅读牛逼!Python常用数据类型的基本操作(长文系列第①篇)
牛逼!Python的判断、循环和各种表达式(长文系列第②篇)牛逼!Python函数和文件操作(长文系列第③篇)牛逼!Python错误、异常和模块(长文系列第④篇)

Matplotlib绘制动态曲线图,超简单!!相关推荐

  1. 超详细的Python matplotlib 绘制动态图

    复习回顾 在matplotlib模块中我们前面学习绘制如折线.柱状.散点.直方图等静态图形.我们都知道在matplotlib模块主要有三层脚本层为用户提供快捷的绘制图形方法,美工层接收到脚本层的命令后 ...

  2. python实时绘制动态曲线_pyqt中使用matplotlib绘制动态曲线

    一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟 ...

  3. Python+Matplotlib绘制动态爱心图

    函数FuncAnimation(fig,func,frames,init_func,interval,blit)是绘制动图的主要函数,其参数如下: a.fig 绘制动图的画布名称 b.func自定义动 ...

  4. python动态柱状图_Python+matplotlib绘制动态更新的柱状图

    Python+matplotlib绘制极坐标柱状图(南丁格尔玫瑰图) Python使用折线图.柱状图.热力图比较不同班级相同学号学生的成绩 问题描述:有些学校的学号最后两位是根据入学成绩顺序排的,那么 ...

  5. matplotlib 散点图_Python学习 —— matplotlib绘制三维曲线图和三维散点图

    1.数据类型部分如下: group A B CA-1 0 0 0.1273 A-1 20 12 0.1087 A-1 40 36 0.1313 A-1 60 24 0.0865 A-1 80 12 0 ...

  6. 如何用python画函数曲线_Python笔记:用matplotlib绘制函数曲线图

    # 导入相关的包 import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl #%%配置全局绘图参数 #设置 ...

  7. Python绘制PDF文件~超简单的小程序

    Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...

  8. Python+matplotlib绘制动态更新的柱状图

    本周推荐书目:<Python程序设计实验指导书>,董付国编著,清华大学出版社 本书详情链接二维码(清华大学出版社天猫官方旗舰店): 送书活动在继续,下周送第二批,详情链接:<Pyth ...

  9. 数据可视化: matplotlib绘制动态图及3维动画

    动画可以有趣地展示某种现象.相比于静态图表,人们更容易被动画和交互式的图表所吸引.在描绘时间序列数据时,动画更有意义,例如多年来股票价格的波动,过去十年气候的季节性变化和和趋势,因为我们可以看到特定参 ...

最新文章

  1. python数字类型-Python3 - 数字类型
  2. 计算机专业伦理总结,《计算机伦理学》节译实践报告
  3. Angular的工作原理
  4. 熊猫直播 使用什么sdk_没什么可花的-但是16项基本操作才能让您开始使用熊猫
  5. android点击通知后消失,通知栏点击后消失解决方法
  6. linux配置网卡自动获取的命令,linux 命令行下配置网卡自动获取 IP
  7. 一道『easy』等级的力扣题,我写了两个小时的笔记...
  8. VS 2003/VS 2005 迅雷资源下载网址
  9. 嵌入式工具 | 嵌入式开发常用几款的代码编辑器
  10. 解决idea的程序包错误:程序包XXX不存在的问题
  11. 超详细图文教程,阿里云服务器搭建
  12. 整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?
  13. 一起Talk Android吧(第三百一十七回:Android中的虚拟按键)
  14. windows 系统安装苹果操作系统
  15. 阿里云服务器持久内存型re6p实例采用Intel傲腾持久内存
  16. Python项目实战 —— 04. 淘宝用户行为分析
  17. 爬取百度 《一人之下》 贴吧
  18. Java - parseObject
  19. 百度新闻评论内容抓取
  20. 加密货币在巴基斯坦曲折的普及之路

热门文章

  1. ngx_lua与go高并发性能对比
  2. Git commit -m与-am
  3. mysql5.6.22.0安装_皮带机滚筒用圆锥孔调心滚子轴承锁紧安装工艺
  4. java 访问线程_java线程简介(共享对数据的访问)
  5. mysql5.6时间问题_mysql5.6版本java插入时间的错误
  6. python3.7.2怎么使用win7_Win7同时安装Python2和Python3的配置
  7. python底层网络交互模块_网络和并发编程(面试题)
  8. 广工计算机专业离散数学考试题,广工华立2014年离散数学期末考试试题(配答案)...
  9. 【thymeleaf】th:with
  10. java命令查看 java.io.tmpdir 参数值