如何在 Matplotlib Pyplot 中顯示網格

mo abdelazim 2023年1月30日 2020年9月26日
  1. 在 Matplotlib 中繪製正態分佈圖
  2. 在 Matplotlib 中的繪圖中使用 grid()
  3. 改變 Matplotlib 中的網格屬性
  4. 繪製垂直或水平線
如何在 Matplotlib Pyplot 中顯示網格

本教程介紹瞭如何在 Python Matplotlib 中在圖上畫一個網格。我們將使用 grid() 函式來實現這一目的。它還演示瞭如何使用 grid() 函式引數來自定義網格的顏色和形狀,甚至只畫垂直或水平線。

在 Matplotlib 中繪製正態分佈圖

讓我們先建立兩個列表來表示 x 和 y 值,並使用它們來繪製一個圖。呼叫 plot() 函式並傳遞 x 和 y 列表作為引數,然後呼叫 show() 函式。

使用 title()xlabelylabel() 函式為你的圖新增標題和標籤,使其易於理解。

from matplotlib import pyplot as plt

x = [10,20,30,40,50,60,70,80,90,100,110]
y = [200,300,300,350,380,450,500,500,520,525,530]

plt.title('MyPlot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.plot(x, y)
plt.show()

輸出:

Matplotlib 中的無網格正常繪圖

但是,普通的畫圖似乎很無聊,缺少了一些東西。現在,我們需要給我們的繪圖新增一個網格。

在 Matplotlib 中的繪圖中使用 grid()

我們將使用 Matplotlib grid() 函式在圖上畫一個網格。

我們需要在 show() 之前呼叫 grid() 函式,這樣就會在前面的圖上畫出一個網格。

請看下面的程式碼。

from matplotlib import pyplot as plt

x = [10,20,30,40,50,60,70,80,90,100,110]
y = [200,300,300,350,380,450,500,500,520,525,530]

plt.title('MyPlot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.plot(x, y)
plt.grid()
plt.show()

輸出:

Matplotlib 中的簡單網格

改變 Matplotlib 中的網格屬性

grid() 函式接受引數來定製網格的顏色和樣式。我們可以像 grid(color='r', linestyle='dotted', linewidth=1) 這樣呼叫 grid() 來得到一個紅色、點狀和細線的網格。

from matplotlib import pyplot as plt

x = [10,20,30,40,50,60,70,80,90,100,110]
y = [200,300,300,350,380,450,500,500,520,525,530]

plt.title('MyPlot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.plot(x, y)
plt.grid(color='r', linestyle='dotted', linewidth=1)
plt.show()

輸出:

Matplotlib 中的網格屬性

線寬是浮動資料型別,這裡有所有的顏色程式碼和線型供你選擇。

有效的顏色程式碼。

程式碼 顏色
b 藍色
g 綠化
r 紅色
c 青色
m 洋紅色
y
k 黑色
w 白色

有效的行式。

  • -
  • --
  • -.
  • :
  • None
  • ``
  • solid
  • dashed
  • dashdot
  • dotted

繪製垂直或水平線

grid() 函式的預設值是同時繪製水平軸和垂直軸,但你可能也想自定義它。你可以使用 axis 引數來實現這一點。呼叫 grid() 時,使用 axis='x'只畫垂直線,或者 axis='y'只畫水平線,或者 axis='both'兩者都畫,這是預設選項。

請看下面的程式碼和它的輸出。

from matplotlib import pyplot as plt

x = [10,20,30,40,50,60,70,80,90,100,110]
y = [200,300,300,350,380,450,500,500,520,525,530]

_, (a, b, c) =  plt.subplots(1,3)

a.grid(axis='y',linestyle='dotted', color='b')
a.plot(x, y)
a.set_title("axis='y'")

b.grid(axis='x',linestyle='dotted', color='b')
b.plot(x, y)
b.set_title("axis='x'")

c.grid(axis='both',linestyle='dotted', color='b')
c.plot(x, y)
c.set_title("axis='both'")

plt.show()

輸出:

Matplotlib 中的 X 軸 Y 軸網格