Python進階之Matplotlib入門(四)

  • 2019 年 10 月 31 日
  • 筆記

引言

Matplotlib是Python的畫圖領域使用最廣泛的繪圖庫,它能讓使用者很輕鬆地將數據圖形化以及利用它可以畫出許多高質量的圖像,是用Python畫圖的必備技能。對於這個教程,大家最好親自碼一遍代碼,這樣可以更有收穫。

前面課程:

Python進階之Matplotlib入門(一)

Python進階之Matplotlib入門(二)

Python進階之Matplotlib入門(三)

概要

1、掌握spine函數,學會通過設置顏色注釋掉一些邊;

2、掌握spine函數,學會通過設置位置改變坐標軸位置;

3、掌握legend函數,學會給不同的線做標註來區分。

圖的脊柱spine

坐標軸線和上面的記號連在一起就形成了脊柱(英文叫Spines,一條線段上有一系列的刻度,是不是很像脊柱骨啊),它記錄了數據區域的範圍。它們可以放在任意位置,不過至今為止,我們都把它放在圖的四邊。

我們現在做一個實驗,將四條脊柱的其中兩條(上和右)設置為無色,看一下會有什麼效果吧:

import numpy as np  import matplotlib.pyplot as plt    plt.figure(figsize=(5, 5))  x = np.linspace(-np.pi, np.pi, 256)  y1,y2 = np.cos(x), np.sin(x)  plt.plot(x, y1, color="blue", linewidth=1.0, linestyle="-")  plt.plot(x, y2, color="green", linewidth=1.0, linestyle="--")    plt.xlim(-4, 4)  plt.ylim(-1.5, 1.5)    ax = plt.gca()  ax.spines['right'].set_color('none')  ax.spines['top'].set_color('none')    plt.show()

這段代碼的重點當然是:

ax = plt.gca()  ax.spines['right'].set_color('none')  ax.spines['top'].set_color('none')

其中gca的意思是Get Current Axes,獲得當前坐標軸

其中spines['right']是指定一條邊

而set_corlor('none')就是讓它消失的技術。

運行結果:

脊柱移動

在上一節我們利用顏色消失術將四個脊柱移除了兩個,現在我們將移動剩下的脊柱:

import numpy as np  import matplotlib.pyplot as plt    plt.figure(figsize=(5, 5))  x = np.linspace(-np.pi, np.pi, 256)  y1,y2 = np.cos(x), np.sin(x)  plt.plot(x, y1, color="blue", linewidth=1.0, linestyle="-")  plt.plot(x, y2, color="green", linewidth=1.0, linestyle="--")    plt.xlim(-4, 4)  plt.ylim(-1.5, 1.5)    ax = plt.gca()  ax.spines['right'].set_color('none')  ax.spines['top'].set_color('none')  ax.spines['bottom'].set_position(('data',0))  ax.spines['left'].set_position(('data',0))    plt.show()

我們使用set_position函數將下面以及左邊位置脊柱移到了x=0以及y=0的位置,形成了我們常見的坐標軸畫法:

圖例標註

當一張圖上面出現多條線的時候,我們就需要給這些線標註名字,比如我們的例子一直都是正弦和餘弦函數,所以我們來用legend函數給兩條線做一下標註:

import numpy as np  import matplotlib.pyplot as plt    plt.figure(figsize=(5, 5))  x = np.linspace(-np.pi, np.pi, 256)  y1,y2 = np.cos(x), np.sin(x)  plt.plot(x, y1, color="blue", linewidth=1.0, linestyle="-", label="cosine")  plt.plot(x, y2, color="green", linewidth=1.0, linestyle="--", label="sine")    plt.xlim(-4, 4)  plt.ylim(-1.5, 1.5)    ax = plt.gca()  ax.spines['right'].set_color('none')  ax.spines['top'].set_color('none')  ax.spines['bottom'].set_position(('data',0))  ax.spines['left'].set_position(('data',0))    plt.legend(loc='upper left')    plt.show()

其中,loc='upper left'是讓標註文字出現在左上角:

更多關於plt.legend用法請參考這個網站:

https://matplotlib.org/3.1.1/tutorials/intermediate/legend_guide.html