「目錄」
繪圖和可視化
Plotting and Visualization
-------> figure and subplot
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-
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!