python可视化数据分析-纯干货:手把手教你用Python做数据可视化(附代码)

原标题:纯干货:手把手教你用Python做数据可视化(附代码)

导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一。可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转换,或者为建模提供一些想法。对于其他人来说,构建网络交互式可视化可能是最终目标。Python有很多附加库可以用来制作静态或动态的可视化文件,但是我将主要关注matplotlib和以它为基础的库。

作者:Wes McKinney

本文摘编自《利用Python进行数据分析》第2版,如需转载请联系我们

matplotlib是一个用于生成出版级质量图表(通常是二维的)的桌面绘图包。该项目由John Hunter于2002年发起,目的在于在Python环境下进行MATLAB风格的绘图。matplotlib和IPython社区合作简化了IPython shell(目前是 Jupyter笔记本)的交互式绘图。matplotlib支持所有操作系统上的各种GUI后端,还可以将可视化导出为所有常见的矢量和光栅图形格式(PDF,SVG,JPG,PNG,BMP,GIF等)。

随着时间的推移,matplotlib已经产生了一些数据可视化的附加工具包,使用matplotlib进行底层绘图。

学习以下示例代码最简单的方式就是在Jupyter notebook中使用交互式绘图。在进行设置时,需要在Jupyter notebook中执行以下语句:

%matplotlib notebook

00 简明matplotlib API入门

在使用matplotlib时,我们使用以下的导入惯例:

In [11]:importmatplotlib.pyplot as plt

在Jupyter中运行%matplotlib notebook(或在IPython中运行%matplotlib ),我们就可以尝试生成一个简单的图形。如果所有的设置都正确,则一个像图1的图形就会出现:

In [12]:importnumpy as np

In [13]: data=np.arange(10)

In [14]: data

Out[14]: array([0,1,2,3,4,5,6,7,8,9])

In [15]: plt.plot(data)

c222602c6dfe4b788b6232caf711fa6e.png

▲图1 简单的线性图

尽管seaborn等库和pandas内建的绘图函数可以处理大部分绘图的普通细节,但如果你想在提供的函数选项之外进行定制则需要学习一些matplotlib的AIP。

本文没有足够的篇幅来对matplotlib的功能宽度和深度进行全面介绍。但介绍的内容应该是足以使你入门的。matplotlib的可视化作品库和文档是学习高级功能的最佳资源。

01 图片与子图

matplotlib所绘制的图位于图片(Figure)对象中。你可以使用plt.figure生成一个新的图片:

In [16]: fig=plt.figure()

在IPython中,一个空白的绘图窗口就会出现,但在Jupyter中则没有任何显示,直到我们使用一些其他命令。plt.figure有一些选项,比如figsize是确保图片有一个确定的大小以及存储到硬盘时的长宽比。

你不能使用空白的图片进行绘图。你需要使用add_subplot创建一个或多个子图(subplot):

In [16]: fig=plt.figure()

In [17]: ax1=fig.add_subplot(2,2,1)

上面代码的意思是图片应该是2*2的(最多四个图形),并且我们选择了四个图形中的第一个(序号从1开始)。如果你接着创建了两个子图,你将会获得看上去类似图2的可视化:

In [18]: ax2=fig.add_subplot(2,2,2)

In [19]: ax3=fig.add_subplot(2,2,3)

ac9bbcf8ade144d5ab85f426a89c5496.png

▲图2 一个带有三个子图的空白matplotlib图片

使用Jupyter notebook时有个细节需要注意,在每个单元格运行后,图表被重置,因此对于更复杂的图表,你必须将所有的绘图命令放在单个的notebook单元格中。

我们将下面这些代码在同一个单元格中运行:

fig=plt.figure()

ax1=fig.add_subplot(2,2,1)

ax2=fig.add_subplot(2,2,2)

ax3=fig.add_subplot(2,2,3)

当你输入绘图命令plt.plot([1.5, 3.5, -2, 1.6]) ,matplotlib会在最后一个图片和子图(如果需要的话就创建一个)上进行绘制,从而隐藏图片和子图的创建。因此,如果我们添加了下面的代码,你会得到形如图3的可视化:

In [20]: plt.plot(np.random.randn(50).cumsum(),'k--')

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值