回想群主刚进希捷时,收到一封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的学习笔记,下周不见不散!