05 第五章 绘图和可视化之Matplotlib:Matplotlib及其plot、subplot绘图,Matplotlib绘制Series、DataFrame,直方图、密度图



之前,学了如何用Pandas做基本的数据分析。

那么,如何进行直观的数据展示呢?使用两个常用的工具:Matplotlib、Seaborn。

一、Matplotlib介绍

1.1 Matplotlib的名字起源

因为跟Matlab中的画图功能很像,所以Matplotlib这里也是Mat开头。

有那么一瞬间,感觉人类画的很多的数据分析的图,其实很像大自然中的一些自然现象

1.2 为什么用Python画图

  • 因为Matlab是个内存巨大(巨无霸)的应用,图形操作界面复杂
  • excel对于复杂的绘图,力不从心

1.3 Matplotlib的特点

  • 类似于Flask的这样一个Python的包

1.4 小例题

1.5 架构

三层;

本课程主要介绍的是Scripting这一层,即:用户使用的一些api;

1.6 参考资料

二、Matplotlib简单绘图之plot

2.1 绘图:一维和二维的列表

1.

因为a是Python中的一个List列表,是一维的。那么,下图是怎么得到的呢?

虽然它是一维的,但是它每个数值也是有index索引的。即,这个索引就是横坐标。

2.

当有两个list列表呢?那就一个列表是x坐标,另一个是y坐标:

注意:上述的两个list列表,的长度必须一致。

3.

百分号%开头的,是一些魔法函数。

比如:用于计算执行时间

2.2 plot函数的声明及各参数

1.

2.

更改线条的样式:为虚线

更改线条的颜色:为红色

2.3 绘图演示

1.

在同一张图里,绘制两个不同风格的图:

2.

下面是更直观的例子:

  • t是一个用numpy创建的数组,元素是等差数列,作为x轴
  • s也是一个用numpy创建的数组,元素是正弦函数sin,作为y轴

两张图:

3.

设置x轴、y轴的名字label;

设置标题;

4.

设置图例:

三、Matplotlib简单绘图之subplot:子图

3.1 一个画布切分成多张独立子图

1.

这里面plt.subplot(2,1,1)指的是:将整个画布切分成2行1列,这里是第1张图;

这里面plt.subplot(2,1,2)指的是:将整个画布切分成2行1列,这里是第2张图;

2.

还可以切分成四张子图:

3.

位置信息的传递:
plt.subplot(2,2,1)可以写成plt.subplot(221)

3.2 subplots

1.

2.

上述的plots分为两部分:

3.

subplots感觉没啥用。

四、Matplotlib绘图之Series

4.1 用plot来绘制

1.

cumsum:累加和

2.

上述的数据量比较小,下面整个大的数据量:

其中:

图形的类型有以下这么几种:

3.grid参数:是否有方格。默认是无。

增加方格:

4.label参数:指定图例。并用指令显示。

5.title参数:图的标题

6.

style参数:指定线条的样式

4.2 一个画布一个图两条线

1.

如何在一张画布里,画出两个Series的数据(即两条线):

4.3 一个画布两个独立子图

1.

生成一个2行1列的单独子图:

  • 因为s1_concum本质是一个Series,所以是可以切片的:

2.

为什么没有出现图形呢?

如下的写法,不推荐。因为有可能是过时的。

五、Matplotlib绘图之DataFrame

5.1 用plot来绘制

1.

生成一个DataFrame:

  • 用Numpy库来生成一个数组:范围1-10的40个随机整数,重塑为一个矩阵
  • DataFrame的行索引index默认,DataFrame的列索引人为指定

2.

各参数的含义:

3.

图形为柱状图:

4.堆叠形式的柱形图:

5.

填充的线形图:

5.2 将默认的按列画图,调整为按行画图

因为默认是按列画图。

1.按行画图

对DataFrame中的某一行画图:

对DataFrame中的所有行画图:

除了单独按某一行画图,还可以单独按某一列画图:

2.

按行画图:非得用上述的循环吗?有点麻烦。

更简便的画法:

  • 先转置:

  • 直接画图

我的问题:

上述是用Matplotlib来绘图的吗?我觉得不是,因为都是s1.plot() 、df1.plot()这种形式。

这里的plot()看起来就是pandas库中的两种数据结构的自己的函数呢。

六、Matplotlib中的直方图、密度图

6.1 直方图:用于体现分布

1.

hist:直方图

hist:
是histogram的缩写,直方图的意思。

我以为是history。。。:)

2.

  • 下图是生成的1000个采样点
  • 横坐标:表示分布的区间阶段

柱子之间有空白,更直观:

3.

调整bins的值:默认是10份,调整为20份:

4.

color参数:

其他的参数,可以查看官方文档。

6.2 密度图

直接指定图形的类型即可:

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 05 第五章 绘图和可视化之Matplotlib:Matplotlib及其plot、subplot绘图,Matplotlib绘制Series、DataFrame,直方图、密度图


Follow excellence, and success will chase you.