一、什么是数据可视化
可视化与数据可视化
可视化:更注重视觉的观感。
数据可视化:强调使用可视化的图表去表达数据中的信息。
数据可视化的分类
分析过程中的数据可视化:强调辅助分析,不在意观感,只要能从图表中得到自己想要的信息即可。
分析结果表达中的数据可视化(主要探讨):强调在阅读数据分析结论的人能更好的知道分析结论是什么。内容会更全面,可视化会更美观。
二、python三大数据可视化工具库
Matplotlib、Seaborn和Plotnine
Matplotlib
脱胎于著名的建模软件Matlab,设计与matlab非常相似,有一整套和Matlab相似的命令API,适合交互式绘图。
Seaborn
主要用于统计分析绘图,基于matlab进行了更高级的API封装,在统计图表的绘制上避免了matplotlib中多种参数的设置,可以把seaborn看作matplotlib的补充。
Plotnine
可以说是ggplot2在python上的移植版,使用的基本语法基本语法一模一样。
它与matplotlib最大的区别是plotnine就像Photoshop绘图一样,采用了图层的概念,这可以使数据可视化工作大大减负,同时更符合绘图着的认知。
三、Matplotlib绘图基础
一句代码相当于图上的一个笔画
matlab绘图元素
- 基本绘图类型
数据元素+图表元素
点 (marker)、线 (line)、文本 (text)、图例 (legend)、网格线 (grid)、 标题 (title)、图片 (image) 等。
-
容器绘图类型
- Figure:最重要的元素,代表整个图像,所有的其他元素都是绘制在其上(如果有多个子图,子图也绘制在figure上)。Figure 对象包含一些特殊的 artist 对象,如图名 (title)、图例 (legend)。
- Axes:第二重要的元素,代表 subplot(子图),数据都是显示在这个区域。一个Figure至少含有一个Axes对象,当绘制多个子图时
- Axis:代表坐标轴对象,本质是一种带装饰的 spines,一般分为 xaxis 和 yaxis,Axis对象主要用于控制数据轴上的刻度位置和显示数值。
- Spines:表示数据显示区域的边界,可以显示或不显示。
- Artist:表示任何显示在 Figure 上的元素,Artist 是很通用的概念,几乎任何需要绘制的元素都可以当成是 Artist,但是一个 Artist 只能存在于一个 Axes 之上。
绘图过程
使用matplotlib画图,需要先设置一个容器绘图类,再在容器内添加基本绘图工具。
四、Plotnine绘图基础
必备图层
ggplot()图层与geom_xxx()/stat_xxx()图层
- ggplot()图层:底层绘图函数,ggplot()函数可以将绘图和数据分离,在ggplot内可以设置数据以及数据的映射,如:ggplot(data, aes(x='col_x', y='y_value', fill='col_class'))。因此,在ggplot()中,除了设置数据外,还可以设置变量的映射aes(),用来表示x和y,还可以在aes()内控制颜色color、大小size和形状shape等等。
- geom_xxx()图层:几何对象,即我们在图中实际看到的图形元素,比如:散点图geom_point()、柱状图geom_bar()、折线图geom_line()、直方图geom_histogram()等等。同样的,我们也可以仅仅通过改变几何对象来生成不同的几何图形。通常来说,通常只使用geom_xxx()就可以绘制绝大多数的统计图表,但是如果涉及复杂的统计变换,那么则需要使用stat_xxx()图层。
可选图层
必备图层其实已经囊括了绝大对数绘图函数,基本图形已经可以绘制。但是,光只有绘图函数还是不够的,还需要美化图表的相关图层以及变换坐标系相关图层,包括:scale_xxx()、facet_xxx()、guides_xxx()、coord_xxx()以及theme()。
-
scale_xxx()图层:标度(scale)是用于调整数据映射的图形属性,scale_xxx()获取数据并对其进行调整以适应视觉的不同方面,即长度、颜色、大小和形状等。一般来说,scale_xxx()的基本格式为:scale映射类型数据类型()。其中,映射类型包括:xy轴,size, color(颜色), fill(填充颜色), shape, alpha(透明度), linetype;数据类型包括:连续型continuous,离散型discrete,自定义manual,同一型identity。
-
coord_xxx()图层:坐标系图层,一般来说,平面中的坐标系有笛卡尔直角坐标系和极坐标系,plotnine目前只支持直角坐标系,因此这是plotnine最大的弊端。在plotnine中,coord_xxx()图层的函数有:
coord_cartesian()
coord_equal()
coord_fixed()
coord_flip()
coord_trans()
-
facet_xxx()图层:分面图层,主要是将一个图按照某个变量分解成多个图,主要是对比在同一变量的不同取值下,关系图表的变化。分面图层的函数有:
facet()
facet_grid()
facet_null()
facet_wrap()