Python之Matplotlib數據可視化(一):簡易線形圖(顏色、風格、座標軸、圖像標籤)

在所有圖形中,最簡單的應該就是線性方程 y = f (x) 的可視化了。來看看如何創建這個簡單的線形圖。首先需要導入以下命令:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

要畫 Matplotlib 圖形時,都需要先創建一個圖形 fig 和一個座標軸 ax 。創建圖形與座標軸的最簡單做法如下所示:

fig = plt.figure()
ax = plt.axes()
plt.show()

在這裏插入圖片描述
在 Matplotlib 裏面,figure( plt.Figure 類的一個實例)可以被看成是一個能夠容納各種座標軸、圖形、文字和標籤的容器。就像在圖中看到的那樣,axes ( plt.Axes 類的一個實例)是一個帶有刻度和標籤的矩形,最終會包含所有可視化的圖形元素。

從一組簡單的正弦曲線(sinusoid)開始:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
ax.plot(x, np.sin(x));
plt.show()

在這裏插入圖片描述
如果想在一張圖中創建多條線,可以重複調用 plot 命令:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x));
plt.show()

在這裏插入圖片描述

1 調整圖形:線條的顏色與風格

1.1 線條顏色

通常對圖形的第一次調整是調整它線條的顏色與風格。 plt.plot() 函數可以通過相應的參數設置顏色與風格。要修改顏色,就可以使用 color 參數,它支持各種顏色值的字符串。顏色的不同表示方法如下所示:

plt.plot(x, np.sin(x - 0), color='blue') # 標準顏色名稱
plt.plot(x, np.sin(x - 1), color='g') # 縮寫顏色代碼(rgbcmyk)
plt.plot(x, np.sin(x - 2), color='0.75') # 範圍在0~1的灰度值
plt.plot(x, np.sin(x - 3), color='#FFDD44') # 十六進制(RRGGBB,00~FF)
plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3)) # RGB元組,範圍在0~1
plt.plot(x, np.sin(x - 5), color='chartreuse'); # HTML顏色名稱

在這裏插入圖片描述
具體線條顏色設置表格如下:

顏色符號 說明
r 紅色
g 綠色
b 藍色
w 白色
c 青色
m 洋紅
y 黃色
k 黑色

如果不指定顏色,Matplotlib 就會爲多條線自動循環使用一組默認的顏色。

1.2 線條風格

與之類似,也可以用 linestyle 調整線條的風格:

plt.plot(x, x + 0, linestyle='solid')
plt.plot(x, x + 1, linestyle='dashed')
plt.plot(x, x + 2, linestyle='dashdot')
plt.plot(x, x + 3, linestyle='dotted');
# 你可以用下面的簡寫形式
plt.plot(x, x + 4, linestyle='-') # 實線
plt.plot(x, x + 5, linestyle='--') # 虛線
plt.plot(x, x + 6, linestyle='-.') # 點劃線
plt.plot(x, x + 7, linestyle=':'); # 實點線

在這裏插入圖片描述

1.3 線條顏色和風格編碼組合

如果你想用一種更簡潔的方式,則可以將 linestyle 和 color 編碼組合起來,作爲 plt.plot() 函數的一個非關鍵字參數使用:

plt.plot(x, x + 0, '-g') # 綠色實線
plt.plot(x, x + 1, '--c') # 青色虛線
plt.plot(x, x + 2, '-.k') # 黑色點劃線
plt.plot(x, x + 3, ':r'); # 紅色實點線
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, x + 0, '-g') # 綠色實線
plt.plot(x, x + 1, '--c') # 青色虛線
plt.plot(x, x + 2, '-.k') # 黑色點劃線
plt.plot(x, x + 3, ':r'); # 紅色實點線
plt.show()

在這裏插入圖片描述
這些單字符顏色代碼是 RGB(Red/Green/Blue)CMYK(Cyan/Magenta/Yellow/blacK)
顏色系統中的標準縮寫形式,通常用於數字化彩色圖形。

1.4 線條和標記節點樣式:

  • 線條顏色:color=‘g’
  • 線條風格:linestyle=’–’
  • 線條粗細:linewidth=5.0
  • 標記風格:marker=‘o’
  • 標記顏色:markerfacecolor=‘b’
  • 標記尺寸:markersize=20
  • 透明度:alpha=0.5

線條和標記節點格式字符 如果不設置顏色,系統默認會取一個不同顏色來區別線條。

標記字符(mark) 說明
o 實心圈標記
. 點標記
, 像素標記,極小的點
v 倒三角標記
^ 上三角標記
> 右三角標記
< 左三角標記
* 星形標記
+ 十字標記
x = np.linspace(0, 10, 1000)
plt.plot(x,
         np.sin(x),
         marker='o',
         markersize=6,
         markerfacecolor='r',
         linestyle='-.',
         linewidth=5,
         alpha=0.8
        )

在這裏插入圖片描述

還有很多其他用來調整圖像的關鍵字參數。若想了解更多的細節,建議你用 IPython 的幫助工具查看 plt.plot() 函數的程序文檔

2 調整圖形:座標軸上下限

雖然 Matplotlib 會自動爲你的圖形選擇最合適的座標軸上下限,但是有時自定義座標軸上下限可能會更好。調整座標軸上下限最基礎的方法是 plt.xlim()plt.ylim()

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
plt.xlim(-1, 11)
plt.ylim(-1.5, 1.5);
plt.show()

在這裏插入圖片描述
如果你想要讓座標軸逆序顯示,那麼也可以逆序設置座標軸刻度值:

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
plt.xlim(10, 0)
plt.ylim(1.2, -1.2);
plt.show()

在這裏插入圖片描述
還有一個方法是 plt.axis()注意不要搞混 axes 和 axis)。通過傳入 [xmin, xmax,ymin, ymax] 對應的值, plt.axis() 方法可以讓你用一行代碼設置 x 和 y 的限值。

plt.plot(x, np.sin(x))
plt.axis([-1, 11, -1.5, 1.5]);

在這裏插入圖片描述
plt.axis() 能做的可不止如此,它還可以按照圖形的內容自動收緊座標軸,不留空白區域。

plt.plot(x, np.sin(x))
plt.axis('tight');

在這裏插入圖片描述
你還可以實現更高級的配置,例如讓屏幕上顯示的圖形分辨率爲 1 :1,x 軸單位長度與 y 軸單位長度相等。

plt.plot(x, np.sin(x))
plt.axis('equal');

在這裏插入圖片描述
關於 plt.axis() 方法設置座標軸上下限和其他更多功能,請參考 plt.axis() 的程序文檔。

3 設置圖形標籤

介紹設置圖形標籤的方法:圖形標題座標軸標題簡易圖例

圖形標題與座標軸標題是最簡單的標籤,快速設置方法如下所示:

plt.plot(x, np.sin(x))
plt.title("A Sine Curve")
plt.xlabel("x")
plt.ylabel("sin(x)");

在這裏插入圖片描述
你可以通過優化參數來調整這些標籤的位置、大小和風格。若想獲取更多的信息,請參考Matplotlib 文檔和對應函數的程序文檔。

在單個座標軸上顯示多條線時,創建圖例顯示每條線是很有效的方法。Matplotlib 內置了一個簡單快速的方法,可以用來創建圖例,那就是plt.legend() 。雖然有不少用來設置圖例的辦法,但我覺得還是在 plt.plot 函數中用 label 參數爲每條線設置一個標籤最簡單。

plt.plot(x, np.sin(x), '-g', label='sin(x)')
plt.plot(x, np.cos(x), ':b', label='cos(x)')
plt.axis('equal')
plt.legend();

在這裏插入圖片描述
你會發現, plt.legend() 函數會將每條線的標籤與其風格、顏色自動匹配。關於通過 plt.legend() 設置圖例的更多信息,請參考相應的程序文檔。

4 Matplotlib 陷阱

雖然絕大多數的 plt 函數都可以直接轉換成 ax 方法(例如 plt.plot() → ax.plot()plt.legend() → ax.legend() 等),但是並非所有的命令都可以這樣用。尤其是用來設置座標軸上下限、座標軸標題和圖形標題的函數,它們大都稍有差別。一些 MATLAB風格的方法和麪向對象方法的轉換如下所示:

•  plt.xlabel() →  ax.set_xlabel()
•  plt.ylabel() →  ax.set_ylabel()
•  plt.xlim() →  ax.set_xlim()
•  plt.ylim() →  ax.set_ylim()
•  plt.title() →  ax.set_title()

在用面向對象接口畫圖時,不需要單獨調用這些函數,通常採用 ax.set() 方法一次性設置所有的屬性是更簡便的方法:

 ax = plt.axes()
ax.plot(x, np.sin(x))
ax.set(xlim=(0, 10), ylim=(-2, 2),
xlabel='x', ylabel='sin(x)',
title='A Simple Plot');

在這裏插入圖片描述

備註

各位老鐵來個“關注”、“點贊”、“評論”三連擊哦
各位老鐵來個“關注”、“點贊”、“評論”三連擊哦
各位老鐵來個“關注”、“點贊”、“評論”三連擊哦

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章