python中matplotlib数据分析_【数据科学系统学习】Python # 数据分析基本操作[三] matplotlib...

我们在上一篇介绍了 pandas,本篇介绍 matplotlib。

绘图和可视化

一个用于创建出版质量图表的桌面绘图包。

Matplotlib API入门

Figure 和 Subplot

matplotlib的图像都位于Figure对象中。

带有三个subplot的Figure:

这些由fig.add_subplot所返回的对象是AxesSubplot对象,直接调用它们的实例方法就可以在其它空着的格子里画图了。

这时发出一条绘图命令,matplotlib就会在最后一个用过的subplot上进行绘制(如果没有会创建一个):

K--:一个线型选项,用于告诉matplotlib绘制黑色虚线图。

依次画出虚线、直方图、散点图。

根据特定布局创建Figure和subplot的简便方法:plt.subplots, 它可以创建一个新的Figure,并返回一个含有已创建的subplot对象的NumPy数组:

可以对 axes数组进行索引,就像是一个二维数组一样:

还可以通过sharex和sharey指定subplot应该具有相同的X轴或Y轴(刻度),在比较相同范围的数据时用,否则matplotlib会自动缩放各图表的界限。

调整subplot周围的间距

默认情况下,matplotlib会在subplot外围留下一定的边距,在subplot之间留下一定的间距。间距跟图像的高度和宽度有关。

利用Figure的subplots_adjust方法修改间距。

下面的例子间距收缩到 0:

轴标签重叠了,matplotlib不会检查标签是否重叠,这时要自己设定刻度位置和刻度标签。

可以在matplotlib的文档中找到各种图表类型。

颜色、标记和线型

完整的linestyle列表参见plot的文档。

ax.plot(x, y, 'g--') #根据x, y绘制绿色虚线

ax.plot(x, y, linestyle='--', color='g') #更明确的方式,和上面一样的效果

要使用其他任意颜色可以通过指定其 RGB 值的形式(如 #CECECE)

matplotlib创建的是连续的线型图,即点与点之间插值,非实际数据点默认是按线性方式插值的,可以通过drawstyle选项修改:

线型图可以加上一些标记,以强调实际的数据点:

标记类型和线型必须放在颜色后面。

简化的写法:

刻度、标签和图例

过程型的pyplot接口

交互式使用,有xlim, xticks, xticklabels之类的方法,它们分别控制图表的范围,刻度位置,刻度标签等。

调用时不带参数,如plt.xlim()返回当前的X轴绘图范围。

调用时带参数,如plt.xlim([0, 10])会将X轴的范围设置为 0 到 10。

更为面向对象的原生matplotlib API。

设置标题、轴标签、刻度以及刻度标签

绘制一段随机漫步:

修改X轴刻度:set_xticks(数值),set_xticklabels(其他任何的值用作刻度)。

添加图例(legend)

添加图例的方式:添加subplot的时候传入label参数。

调用 ax.legend() 或 plt.legend() 来自动创建图例。

loc告诉matplotlib要将图例放在哪,best选择最不碍事的位置。

去除图例:不传入label或传入label='_nolegend_'(注意有两个下划线)。

注释以及在Subplot上绘图

注释:通过 text, arrow, annotate 等函数进行添加。

matplotlib有一些表示常见图形的对象:称为块(patch),完整的集合位于matplotlib.patches。

创建一个块对象shp,然后通过ax.add_patch(shp)将其添加到subplot中:

图表对象:它们其实就是由块组装而成的。

将图表保存到文件

利用 plt.savefig 可以将当前图表保存到文件。(该方法相当于 Figure 对象的实例方法 savefig)。

如要将图表保存为 SVG 文件:

两个重要的选项:

dpi:控制“每英寸点数”分辨率;

bbox_inches:可以剪除当前图表周围的空白部分。

得到一张带有最小白边且分辨率为 400DPI 的 PNG 图片:

savefig并非一定要写入磁盘,也可写入任何文件型的对象,比如StringIO:

matplotlib配置

操作matplotlib配置系统的方式:Python 编程方式,即利用rc方法。

如将全局的图像默认大小设置为 10 * 10,执行:

plt.rc('figure', figsize=(10, 10))

rc的第一个参数:是希望自定义的对象(如'figure', 'axes', 'xtick', 'ytick', 'grid', 'legend'),这里是figure。

可以跟一系列的关键字参数,将它们写成一个字典:

全部的自定义选项:查阅matplotlib的配置文件matplotlibrc(位于 matplotlib/mpl-data 目录中)。对该文件进行自定义,并将其放在目录中,则每次使用matplotlib时就会加载该文件。

pandas中的绘图函数

在pandas中,有行标签、列标签、分组信息。

要制作一张完整的图表,原本需要一大堆的matplotlib代码,现在只需一两条简洁的语句就可以了。pandas有许多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。

线型图

Series和DataFrame都有一个用于生成各类图表的plot方法,默认情况下它们都生成线型图。

DataFrame的plot方法会在一个 subplot 中为各列绘制一条线,并自动创建图例。

柱状图

垂直柱状图:Kind='bar'

水平柱状图:Kind='barh'

设置 stacked=True 即可为DataFrame生成堆积柱状图:

柱状图利用value_counts图形化显示Series中各值的出现频率,如:

直方图和密度图

直方图(histogram):是一种可以对值频率进行离散化显示的柱状图。

密度图:通过计算“可能会产生观测数据的连续概率分布的估计”而产生的。

一般的过程是将该分布近似为一组核(如正态(高斯)分布之类的较为简单的分布)。

密度图也被称作 KDE 图(Kernel Density Estimate 核密度估计)。

直方图和密度图常被画在一起,直方图以规格化形式给出(以便给出面元密度),再在其上绘制核密度估计。

由两个不同的标准正态分布组成的双峰分布:

最后一行代码绘制的密度图的最终结果:

散布图

散布图(scatter plot):是观察两个一维数据序列之间关系的有效手段。

matplotlib的scatter方法是绘制散布图的主要方法。

在探索式数据分析工作中,同时观察一组变量的散布图是很有意义的。也被称为散布图矩阵(scatter plot matrix)。

pandas提供了一个能从DataFrame创建散布图矩阵的 scatter_matrix 函数,它还支持在对角线上放置各变量的直方图或密度图。

不足之处,欢迎指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值