首页 > 代码库 > 8-原谅我这一生不羁放纵爱作图之matplotlib(上)

8-原谅我这一生不羁放纵爱作图之matplotlib(上)

回想群主刚进希捷时,收到一封Advanced 6 sigma training的报名通知邮件,虽然更好的选择是从零学起,但选日不如撞日,于是很冲动地报名参加了,从此走上了数据分析的不归路!6 sigma黑带毕业后,老板把我当成部门吉祥物供着,一旦有数据分析的任务都要找我。在迎合老板的过程中,群主奇迹般地从一个小白蜕变为一个作图达人!从前车马慢,作图只会柱状图,后来CDF,等高线图,散点矩阵,矩形树图,气泡图等都尝试了一遍。直到有一天,历经繁华的群主不小心点开perceptual edge这个网站,作者把一些花哨唬人的作图方式都痛批了一遍,得出结论:这些3D炫彩的凹造型方式其实不如柱状图!看到这句话,群主的脑中响起了《道德经》的BGM:“大智若愚,大巧若拙。大音希声,大象无形。”整个世界都安静了,山高月小,水落石出。群主决定回归自然。不久遇到了matplotlib(python最著名的绘图库),发现这货竟然能徒手写代码画图,群主的断舍离情结得到了满足,于是连夜卸载了JMP, Tableau等肤浅的作图软件,踏上了一条少有人走的艰辛而美妙的岔路……

 

本周笔记中出现的数据文件可从百度网盘下载:

http://pan.baidu.com/s/1o82pZ2i

 

一、数据可视化原则

1. 什么是数据可视化

数据可视化就是将数据合理地映射成图形元素的过程。

 

2. 数据可视化的目的

人类是视觉动物,其视觉神经系统有强大的模式识别和分析能力,数据可视化是启动这套系统的途径。

 

技术分享

技术分享

技术分享

 

3. 数据可视化的原则

明确可视化的具体目标

  • 可视化的类型

    • 探索型:做之前并不知道数据中有哪些规律。可视化是探索的工具。

    • 解释型:知道规律,目的是方便传递(以让其他人更容易理解数据中的规律)。要考虑受众。

  • 要传送什么样的信息

    • 哪些信息最重要

    • 使用什么数据

  • 考虑受众群体

    • 阅读者的角色和知识背景:例如高层领导者就可能更需要偏宏观的信息。

    • 需要何类信息?

    • 细节程度?

  • 选择合适的视觉编码方法(如下图形元素)

    • 位置

    • 长度

    • 尺寸

    • 角度

    • 颜色

    • 形状……

 

二、开始作图

基本概念

  • figure:画布

  • axes:坐标轴,或者理解成所画的图形

  • 一张画布(figure)可以有很多图(axes)

其他

  • label:坐标轴的标注

  • ticks:刻度

  • legend:图例

    • loc = 0:自动寻找最好的位置

    • ncol = 3:分三列

    • fontsize

    • frameon = True :边框

 

技术分享

 

技术分享

 

技术分享

 

技术分享

技术分享

 

画布:

技术分享

 

三、图的类型

基本图形类型

  • 线图line

  • 条形图bar (表现离散数据)

  • 饼图pie

  • 直方图 histogram(画连续数据)

  • 散点图 scatter (两个因素的相关性)

 

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享


坐标轴属性:

技术分享

技术分享

技术分享

注意区别:

fig, ax = plt.subplots() 画布里只有一个axes。 fig 后跟 ax

fig, axes = plt.subplots(1, 4, figsize=(16, 3)) 画布里有多个axes。 fig 后跟 axes

学完这些,相信大家和我一样脑海中滚动着《杀手leon》的著名台词:

Is life always this hard, or is it just when you are a kid? 

Always like this. 

配图:笑着活下去.jpg

 

似乎画图都已经这么难了,那后面的机器学习算法呢?不用担心,群主以24K纯种理科生的经验保证,matplotlib画图这节是最难的,因为死记硬背的细节太多了!只要跨过这个坎,前面一片坦途ヾ(o???)?加油,还有一次matplotlib的学习笔记,下周不见不散!

8-原谅我这一生不羁放纵爱作图之matplotlib(上)