Python 錯誤欄

Ammar Ali 2024年2月15日
Python 錯誤欄

本教程將討論使用 Python 中 Matplotliberrorbar() 函式繪製帶有誤差線的資料。

Python 錯誤欄

有些值不是 100% 準確,它們包含一些誤差,例如電阻器的值。電阻值具有 10% 的容差或誤差。這意味著該值不準確,但它可以在 10% 的範圍內變化。

Python 中的誤差線用於繪製誤差以及繪圖中的資料點,以顯示值中存在的誤差。要在 Python 中繪製帶有誤差線的資料,我們可以使用 Matplotliberrorbar() 函式。

例如,讓我們繪製一些隨機資料併為每個值新增誤差線。請參閱下面的程式碼。

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4]
y_values = [1, 2, 3, 4]
y_error = [0.9, 0.5, 0.75, 0.25]

plt.errorbar(x_values, y_values, yerr=y_error)
plt.show()

輸出:

帶有誤差線的資料

在這個例子中,我們只在 y 軸上新增了錯誤,但我們也可以在 x 軸上新增錯誤。上述輸出中的條形圖是垂直的,但在 x 軸錯誤的情況下,條形圖將是水平的。

每個條的長度取決於用它指定的誤差值。誤差向量的大小應與資料向量相同。

errorbar() 函式有一個引數 fmt,它可以設定繪圖中使用的線條的屬性,例如線條樣式、顏色和標記符號。

預設線條樣式是實線,但我們可以將其更改為虛線 --、點劃線 -. 或虛線:。預設顏色是藍色,但我們可以將其更改為任何顏色,如綠色或紅色,使用顏色的第一個字母,如 r 代表紅色。

我們還可以新增一個標記符號,例如 o 代表圓形,d 代表菱形,而*代表星形標記。我們可以使用 ms 引數來更改標記的大小。

例如,讓我們在上圖中新增一個 x 軸誤差並更改線型、顏色和標記。請參閱下面的程式碼。

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4]
y_values = [1, 2, 3, 4]
y_error = [0.9, 0.5, 0.75, 0.25]
x_error = [0.5, 0.5, 0.5, 0.5]

plt.errorbar(x_values, y_values, yerr=y_error, xerr=x_error, fmt="--ro", ms=10)
plt.show()

輸出:

更改誤差線的線屬性

我們還可以使用 markeredgecolormec 引數更改其他標記屬性,例如使用 markeredgecolormec 引數更改標記面顏色,使用 markerfacecolormfc 使用 markeredgewidthmew 引數更改標記邊緣寬度.

我們還可以更改誤差線的屬性,例如誤差線的顏色、線寬、大寫大小和大寫厚度。預設情況下,誤差線的顏色將與線條樣式的顏色相同,但我們可以使用顏色名稱或顏色名稱的第一個字母並使用 ecolor 引數將其更改為任何顏色。

預設情況下,誤差線的寬度將與線條樣式的寬度相同,但我們可以使用 elinewidth 引數將其更改為任意寬度。預設情況下,cape 大小和厚度為零,但我們可以使用 capsizecapthick 引數將其更改為任何浮點值。

例如,讓我們更改上面提到的誤差線的屬性。請參閱下面的程式碼。

import matplotlib.pyplot as plt

x_values = [1, 2, 3, 4]
y_values = [1, 2, 3, 4]
y_error = [0.9, 0.5, 0.75, 0.25]
x_error = [0.5, 0.5, 0.5, 0.5]

plt.errorbar(
    x_values,
    y_values,
    yerr=y_error,
    xerr=x_error,
    fmt="--ro",
    ms=10,
    ecolor="g",
    elinewidth=3,
    capsize=10,
    capthick=3,
)
plt.show()

輸出:

改變誤差線的屬性

我們還可以使用 errorevery 引數隱藏某些點上的誤差線。預設情況下,此引數的值為 1,但我們可以將其更改為整數值。例如,如果我們將 errorevery 引數的值設定為 2,誤差線將出現在一半的點上。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook