python 数据分析与可视化(Python数据分析笔记9.1.1)
「目录」
绘图和可视化
Plotting and Visualization
- 9.1 => matplotlib
-------> figure and subplot
- 9.2 => pandas和seaborn绘图
matplotlib
作者原书中写道,matplotlib是一个用于创建出版质量图表的绘图包(主要是2D方面)。
该项目是John Hunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口。
随着时间发展,matpotlib衍生出了多个数据可视化的工具集,它们使用matplotlib作为底层。其中之一是seaborn。
matplotlib约定的引入方式是下面这样的:
import matplotlib.pyplot as plt
首先,建议在Jupyter notebook中执行下面的语句,这样就可以在jupyter notebook中进行交互式绘图了:
%matplotlib notebook
先做一个简单的线图吧:
In [1]: import matplotlib.pyplot as plt
In [2]: import numpy as np
In [3]: data = np.arange(10)
In [4]: data
Out[4]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [5]: plt.plot(data)
Figure and Subplot
matplotlib的图像都位于Figure对象中。我们可以用plt.figure创建一个新的Figure:
In [6]: fig = plt.figure()
plt.figure()中有一些选项比如figsize可以设置图片的大小和纵横比。
通过add_subplot我们可以在空白的figure上创建一个或多个subplot子图:
In [7]: ax1 = fig.add_subplot(2, 2, 1)
In [8]: ax2 = fig.add_subplot(2, 2, 2)
In [9]: ax3 = fig.add_subplot(2, 2, 3)
上面代码的意思是,创建2*2的图像(最多4张图),第3个参数代表当前选中的是第几个图。
ax1.hist代表第一张图为柱状图,ax2.scatter代表第二张图为散点图,ax3.plot代表第三张图为折线图,color参数就是颜色,alpha参数为透明度:
In [10]: _ = ax1.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)
In [11]: ax2.scatter(np.arange(30), np.arange(30) 3 * np.random.randn(30))
In [12]: ax3.plot(np.random.randn(50).cumsum(), 'k--')
更方便的创建网格的方法是使用方法plt.subplots,它会创建一个新的Figure,并返回一个含有已创建的subplot对象的Numpy数组:
In [13]: fig, axes = plt.subplots(2, 3)
In [14]: axes
Out[14]:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000001CFAF06DEB8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000001CFAF096048>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000001CFAF0C5160>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x000001CFAF234278>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000001CFAF260390>,
<matplotlib.axes._subplots.AxesSubplot object at 0x000001CFAF2924A8>]],
dtype=object)
现在通过对axes数组进行索引就可以方便的绘图了:
In [15]: axes[0,1].scatter(np.arange(20), np.arange(20) 3 * np.random.randn(20), color='y', alpha=0.7)
Out[15]: <matplotlib.collections.PathCollection at 0x1cfaf039978>
In [16]: axes[0,1].scatter(np.arange(20), np.arange(20) 3 * np.random.randn(20), color='b', alpha=0.7)
Out[16]: <matplotlib.collections.PathCollection at 0x1cfaf2de240>
BYE-BYE!
-END-
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com