Python的matplotlib包

我們前面講到 Python 的兩個科學計算庫,numpy 和 pandas,相信小伙伴們已經可以熟練使用這兩個庫中的常見方法。華羅庚老先生曾經說過這樣一句話,“數形結合百般好,數形分離萬事難”,圖形是我們科學計算的重要工具。在本篇我們將結合 numpy 和 pandas 包來給小伙伴們介紹一個非常好用的畫圖庫 matplotlib,matplotlib 非常適合進行交互式制圖,承接上兩篇,本篇繼續采用 jupyter notebook 進行演示。

首先,導入 pandas、numpy 和 matplotlib 包,結合 pandas 的 Series 函數生成一個角標從 0 到 999 的一維數組:

In [1]:  import pandas as pd
         import numpy as np
         import matplotlib.pyplot as plt
         data = pd.Series(np.random.randn(1000),index=np.arange(1000))
         data.plot()
         plt.show() 

Out [1]:  

同樣,我們也可以結合 pandas 中的 DataFrame 函數生成一個矩陣,并按照矩陣的列畫出 4 條線:

In [2]:  data = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=list('ABCD'))
         data = data.cumsum() # 累加
         data.plot()
         plt.show()

Out [2]:

接下來,我們將 A 作為 x 軸,將 B 作為 y 軸,畫出散點圖,觀察 A 與 B 是否有關系:

In [3]:  data.plot.scatter(x='A',y='B',color='Red',label='Class 1')
         plt.show()

Out [3]:

我們也可以用最簡單的方式,畫出一條折線,并修改一下線條的風格、顏色和標記:

In [4]:  x = [1, 2, 3, 4]
y = [1, 2, 5, 7]
plt.plot(x, y, color="blue", linestyle="--", marker="*", linewidth=1.0)
plt.show()

Out [4]:

關于上文提到的線條的風格、顏色和標記的參照表,我們摘抄如下:

線條風格 實線 虛線 長虛線(上方代碼中使用的) 點劃線 無線條(點)
代碼 - : -- -. None(默認)
線條顏色 紅色 黃色 綠色 藍色(上方代碼中使用的) 黑色 白色 青色
代碼 r y g b k w c
線條標記 代碼 線條標記 代碼 線條標記 代碼 線條標記 代碼
圓圈 o(小寫字母o) . 星號 * 加號 +
朝下三角 v(小寫字母v) 朝上三角 ^ 朝左三角 < 朝右三角 >
大菱形 D 小菱形 d 正方形 s 五邊形 p

為了讓圖更清晰易懂,我們可以再額外加上標題和標簽:

In [5]:  x = np.arange(4)
         y1 = np.exp(x)
         y2 = np.exp(x*2)
         plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1, label="y1")
         plt.plot(x, y2, color="b", linestyle="-", marker="s", linewidth=1, label="y2")
         plt.title("Figure 1")    # 聲明標題為 Figure 1
         plt.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))  # 在左上角 upper left 聲明標簽
         plt.show()

Out [5]:

在某些情況下,我們也可以給圖添加網格和背景色,更有助于參照和對比數據:

In [6]:  x = np.arange(4)
         y1 = np.exp(x)
         y2 = np.exp(x*2)
         plt.subplot(facecolor="w")  # 要先定義
         plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1, label="y1")
         plt.plot(x, y2, color="b", linestyle="-", marker="s", linewidth=1, label="y2")
         plt.title("Figure 1")
         plt.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))
         plt.grid(color="k",linestyle=":")
         plt.show()

Out [6]:

我們還可以更為詳細地用箭頭指向某條線,做詳細的注釋:

In [7]:  x = np.arange(4)
         y1 = np.exp(x)
         y2 = np.exp(x*2)
         plt.subplot(facecolor="w")  # 要先定義
         plt.plot(x, y1, color="r", linestyle="-", marker="^", linewidth=1, label="y1")
         plt.plot(x, y2, color="b", linestyle="-", marker="s", linewidth=1, label="y2")
         plt.title("Figure 1")
         plt.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))
         plt.grid(color="k",linestyle=":")
         plt.annotate('y2 = np.exp(x*2)', xy=(2, 50), xytext=(1.5, 210), arrowprops=dict(facecolor='k',         headwidth=5, width=1))
         plt.show()

Out [7]:

annotate 的第一個參數 'y2 = np.exp(x*2)' 是注釋的文本信息,xy 表示要注釋的點的坐標,xytext 表示注釋文本的起始坐標,arrowprops 表示箭頭,facecolor 表示箭頭顏色,headwidth 表示箭頭寬度,width 表示箭身寬度。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容