公众号后台回复“图书“,了解更多号主新书内容

作者:宁海涛

来源:DataCharm

01. 引言

Matplotlib 制作稍带“艺术”的可视化作品,ggplot2 基于其优秀绘图图层设置及多种拓展绘图包可以较为灵活的完成此类任务,但Matplotlib也不是完全不可以,本期推文用python经典的绘图包Matplotlib进行“气球”图(通过图形合理搭配实现)的绘制,主要涉及Matplotlib 散点图(sactter())及 线 vlines()、mlines()及PatchCollection()等的灵活应用。上期推文预告的效果图在文末的代码链接(notebook)中 也会有绘制方法,本期推文为完善版本

02. 数据处理

本期推文的绘图数据为描述美国圣诞节播放歌曲的数据,我们选取其中部分年份进行可视化绘制,数据主要如下(部分):

数据介绍:title 为可取名,year为年份(绘图-x),week_position 为星期(绘图-y)。这里提一下,这是处理好的数据结果,原始数据处理过程也不是特别复杂,就不介绍处理过程(这里主要是可视化技巧介绍)。但有一点需要大家注意:字符串 和 时间数据 的处理在数据处理和分析中占有很大比例,而pandas也很好继承了Python字符串、时间数据等的灵活处理功能,详细内容,大家可以先看官网教程(看完大多数的数据处理任务都可以满足啦,后期我们也会根据自己在科研和工作过程中的具体数据处理小技巧进行专门推文教程制作)。

03. 数据可视化

本期推文 数据可视化的难点 在于连接“气球”的连接线的绘制,ggplot2 中geom_segment()可以灵活实现这一过程,而Matplotlib 则相对麻烦点,但也是有绘制连接线的方法的。本期推文的连接线绘制过程大家可直接记住,套用即可

(1) Matplotlib 绘制 线 的方法

大家可能首先想到 ax.axvline()、ax.vlines()和ax.axhline()、ax.hlines() 方法绘制垂直及水平线。ax.axvline()和ax.axhline()用于绘制固定位置的线十分方便,但其范围(长短)位置较为固定,无法随着具体数值进行更改,即transform属性固定。要想根据 具体数值 更改线 长短 ,则还需使用ax.vlines()和ax.hlines()进行绘制。本文刚开始实验过程也是采用ax.vlines()进行尝试下绘制,结果如下:

代码:

结果如下(部分):

结果也可以看出:虽然设置了alpha ,但也会根据 “重复“绘制,导致线的粗细不同,再者,散点(scatter)与 线(vlines) 的连接也不能满足绘图需求。

(2) matplotlib.lines 方法绘制

在尝试多次和查看matplotlib官网后,我们发现matplotlib.lines 可以有效解决连接线问题,这也可以看作为Matplotlib的“geom_segment“。具体如下:

(上图中的代码你也可以当作固定公式进行直接套用即可)

绘制效果:

无论从 连接线的粗细以及点线连接 来看,此方法都可以完美解决。

其中:

for p1, p2 in zip(christmas['year'], christmas['week_position']):

christmas['year'] 和christmas['week_position'] 为具体的数据,

newline([p1,1], [p1,p2])则是引用绘线函数。

比如:p1 为 year中数据,我们选1960 ,p2 为 week_position 中数据,选 13,那么在位置 (1960,1)和位置(1960,13) 进行连接线绘制,如下图红线圈出的部分,其他依次绘制即可。

(3) 散点图颜色设置及图例添加

散点图的颜色设置,我们采用字典方法,详细可以查看我之前的推文(推文连接),具体代码如下:

涉及列表表达式和字典的构建,不熟悉的可以自行百度啊,结果如下:

再根据数据christmas 中title 列,遍历即可:

还是那句话,列表和字典的灵活应用,可以使数据处理的效率加倍!!

图例添加还是和之前推文教程一样(Hans Rosling Charts Matplotlib 绘制),如下(部分):

这里结合了刚才构建的color_dict字典。

(4)具体代码及重要部分解释

部分解释如下:

① 第 6 行,在 plt.subplots()中设置了fig背景颜色facecolor和边框颜色edgecolor。

② 第 12- 16 行, 绘制散点图多类别图例。

③ 第 17- 19 行,绘制用于显示光照效果的散点图,设置颜色即可。

④ 第 21 – 28 行,以及 36 – 43 行,都是连接线 的绘制方法。

⑤ 第 30 – 34 行,绘制矩形形状(气球卡口),使用Rectangle() 方法进行绘制。

⑥ 第 47 – 51 行,为具体的图例属性设置,包括图例标题、字体颜色、大小、图例填充颜色以及图例的位置微调等。

⑦ 第 65 行 去除axis 包括网格线、刻度等属性。

⑧ 第 66 行,反转y轴设置。

其他为具体如刻度范围之类的设置。

最终效果如下:

◆ ◆ ◆  ◆ ◆

当当网开学季活动来袭,满100减50的基础上,实付满200的基础上使用优惠码DYU6NM可以再减40,相当于400-240,

使用方法如下:

步骤一,挑选心仪的图书至购物车点击结算

步骤二,点击优惠券/码处

步骤三,输入优惠码DYU6NM (注意全部要大写)

需要注意的是:优惠码全场自营图书可用(教材、考试类除外)

更多详情可以扫描下方二维码或点击小程序:

点击阅读原文,即可参与当当400-240购书活动

Matplotlib 气球图 制作相关推荐

  1. python爬取豆瓣《狂暴巨兽》评分影评,matplotlib和wordcloud制作评分图和词云图

    开发环境:win7,8,10,python3+ python模块:requestes,bs4,matplotlib,jieba,wordcloud,PIL,numpy,random 实现的功能和思路: ...

  2. VMD/EMD/LMD/EEMD分解后三维图制作

    @ 介绍一下信号分解之后的模态分量制作三维图的办法 当我在网上找这方面的程序时,别人向我要"辛苦费",我觉得这种"无用"的知识就是用来相互分享的,于是刻苦钻研了 ...

  3. matplotlib 雷达图2

    说明 搞了一个最新版本的雷达图,比以前那个美观. 不多说,代码奉上: 完整代码 ''' matplotlib雷达图 ''' import numpy as np import matplotlib.p ...

  4. netbeans 添加gif图片_GIF动图制作app下载|GIF动图制作安卓版 v3.9.2 官方免费版

    GIF动图制作APP是一款可以让您使用起来非常顺手的GIF动态图片制作软件,用户只需要根据app提供的功能,通过手机摄像头捕捉亲朋好友.家庭宠物等生动.有趣的瞬间,生成动画GIF图片珍藏起来!然后将视 ...

  5. 免费GIF动图制作,简简单单一招搞定

    免费的GIF动图制作,教你一招搞定,下面就给大家介绍一款好用的gif制作工具,在线一键制作gif动图. 我们在网络聊天中,表情包已经是不可分割的一部分,也是沟通的种的一个桥梁.详细我们每个人的手机里都 ...

  6. python用循环打出阶梯图形,matplotlib阶梯图的实现(step())

    step函数概述 step函数用于绘制阶梯图. 根据源码可知,step函数是对plot函数的轻量级封装,很多概念和用法与plot函数非常相似. def step(self, x, y, *args, ...

  7. arcengin交互式动图制作

    根据项目需求展示地图 arcengin交互式动图制作 arcengin交互式动图制作

  8. art-法线贴图制作

    title: art-法线贴图制作 categories: Art tags: [art, 法线, 贴图, 制作, ta] date: 2019-01-23 14:26:18 comments: fa ...

  9. Python数据分析(三)matplotlib折线图应用实例——自定义图形风格

    往期推荐: Python数据分析(一)matplotlib基础绘图和调整x轴刻度 Python数据分析(二)matplotlib折线图应用实例--绘制10点到12点的气温 Python数据分析(四)m ...

最新文章

  1. Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应...
  2. UA OPTI570 量子力学8 每一个左矢都有与之对应的右矢吗?
  3. 使用python操作postgresql 查询
  4. 艾伟_转载:使用LINQ to SQL更新数据库(上):问题重重
  5. 科大星云诗社动态20210413
  6. JS实现数组去重(重复的元素只保留一个)
  7. redis zset转set 反序列化失败_Redis只往zset有序集合添加不存在的数据:关键字索引查询构建+源码分析...
  8. 只用一套解决方案,就可解决80%的交通物流行业信息难题
  9. golang mysql封装_golang如何封装路由
  10. 判断数正负(信息学奥赛一本通-T1039)
  11. Python使用pdfminer3k提取PDF文件中的文本
  12. 为 Notepad++ 安装 NppFTP 插件,查看修改虚拟机上的文本文件
  13. Linux 进程间通讯(IPC)方式 ------- 共享内存
  14. 算法-获取质数(素数)数组
  15. 抖音短视频数据分析报告工具
  16. 100个必会的python脚本-python100例,python经典例题
  17. 读后感--《魔鬼数学:大数据时代,数学思维的力量》
  18. win10安装steam有损计算机,Win10安装steam平台提示“steam fatal error”报错的解决方法...
  19. ffmpeg音视频剪辑常用操作
  20. request请求 下载附件

热门文章

  1. 磷化铟量子点 InP/ZnS QDs 近红外二区量子点的吸收发射光谱图
  2. vue 获取路由的参数,并判断是否为某一特定值
  3. msys2 vscode go 环境搭建
  4. 阿里云服务器设置报警,比如CDN设置报警
  5. photoshop制作乘风破浪的小船
  6. Share 远离驼背你可以更帅、更美
  7. 嗨,你要的iPad丝印版画笔刷已到货130款
  8. 学魅族手滑,中兴红牛V5抢购标错价
  9. VSCode自动保存文件
  10. 智能指针之 shared_ptr 的使用