Chuyển đến nội dung

Thanh sai số với pgfplots

Thêm error bars/.cd, y dir=both, y explicit vào các tùy chọn của \addplot và viết mỗi sai số sau điểm của nó dưới dạng +- (0, error), hoặc đọc sai số từ một cột của bảng bằng y error=.

Sai số viết cùng các điểm

Thanh sai số được bật cho từng \addplot. Các khóa sau error bars/.cd cho biết vẽ chúng theo hướng nào và giá trị lấy từ đâu. Với y explicit, mỗi điểm mang sai số riêng của nó sau +-.

Sai số y đối xứng lấy từ tọa độ

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[xlabel={Length (m)}, ylabel={Period (s)}]
    \addplot+[error bars/.cd, y dir=both, y explicit]
      coordinates {
        (0.2,0.90) +- (0,0.05)
        (0.4,1.27) +- (0,0.04)
        (0.6,1.55) +- (0,0.06)
        (0.8,1.80) +- (0,0.05)
        (1.0,2.01) +- (0,0.07)
      };
  \end{axis}
\end{tikzpicture}

Trong +- (ex, ey), số thứ nhất là sai số theo x và số thứ hai là sai số theo y. Chỉ những hướng bạn bật mới được vẽ.

Sai số từ một cột của bảng

Khi dữ liệu là một bảng, hãy chỉ ra cột sai số bằng y error=. Cách này cũng dùng được với tệp, ví dụ table[x=t, y=v, y error=dv, col sep=comma] {data.csv}.

Sai số y đọc từ một cột

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[xlabel={Dose}, ylabel={Response}, ymin=0]
    \addplot+[only marks, error bars/.cd, y dir=both, y explicit]
      table[x=dose, y=mean, y error=sd] {
        dose mean sd
        1    2.1  0.3
        2    3.4  0.4
        4    5.0  0.6
        8    6.2  0.5
      };
  \end{axis}
\end{tikzpicture}

Sai số một phía và sai số cố định

y dir=plus hoặc y dir=minus chỉ vẽ nửa trên hoặc nửa dưới. Thay vì giá trị cụ thể, y fixed=0.2 cho mọi điểm cùng một sai số, còn y fixed relative=0.1 cho sai số bằng 10% giá trị của điểm.

Chỉ sai số phía trên, và một sai số tương đối

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[ymin=0, legend pos=north west]
    \addplot+[error bars/.cd, y dir=plus, y fixed=0.4]
      coordinates {(1,2) (2,3) (3,3.5) (4,4.4)};
    \addplot+[error bars/.cd, y dir=both, y fixed relative=0.1]
      coordinates {(1,1) (2,1.6) (3,2.2) (4,2.5)};
    \legend{fixed $\pm 0.4$ (upper), relative 10\%}
  \end{axis}
\end{tikzpicture}
Dàn trang bởi Scissor LaTeX: Chỉ sai số phía trên, và một sai số tương đối

Sai số trên và dưới khác nhau

Viết += (0, up) cho sai số phía trên và -= (0, down) cho sai số phía dưới.

Sai số không đối xứng

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[width=7cm, height=5cm, xmin=0.5, xmax=3.5]
    \addplot+[only marks, error bars/.cd, y dir=both, y explicit]
      coordinates {
        (1,2.0) += (0,0.5) -= (0,0.1)
        (2,3.0) += (0,0.2) -= (0,0.6)
        (3,2.6) += (0,0.3) -= (0,0.3)
      };
  \end{axis}
\end{tikzpicture}

Sai số theo x và y

Bật cả hai hướng bằng x dir và y dir. error bar style định kiểu cho các thanh.

Thanh sai số theo cả hai hướng

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[xlabel=$x$, ylabel=$y$]
    \addplot+[only marks, mark=square*,
              error bars/.cd,
                x dir=both, x explicit,
                y dir=both, y explicit,
                error bar style={red, thick}]
      coordinates {
        (1.0,1.2) +- (0.15,0.20)
        (2.0,2.1) +- (0.20,0.15)
        (3.0,2.8) +- (0.10,0.30)
      };
  \end{axis}
\end{tikzpicture}

Dải sai số với fill between

Với độ bất định liên tục, hãy tô vùng giữa một đường cong trên và một đường cong dưới. Nạp thư viện fillbetween, đặt tên cho cả hai đường bằng name path, rồi tô vùng giữa chúng.

Một dải tô màu quanh đường cong

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[domain=0:4, samples=40, xlabel=$t$, ylabel=$y$]
    \addplot[name path=upper, draw=none] {exp(-0.5*x) + 0.1 + 0.05*x};
    \addplot[name path=lower, draw=none] {exp(-0.5*x) - 0.1 - 0.05*x};
    \addplot[blue!20] fill between[of=upper and lower];
    \addplot[blue, thick] {exp(-0.5*x)};
  \end{axis}
\end{tikzpicture}
\end{document}

Các tùy chọn của thanh sai số

Tùy chọnTác dụngTrong Scissor LaTeX
y dir=both, plus, minus, nonevẽ nửa nào của thanh (cũng có x dir)Hoạt động
y explicit, x explicitsai số từ +- trong tọa độ hoặc từ một cột của bảngHoạt động
y error=col, x error=col, y error index=ncột của bảng chứa sai sốHoạt động
+= (ex,ey), -= (ex,ey)sai số trên và dưới riêng biệt trong tọa độHoạt động
y fixed=v, y fixed relative=rcùng một sai số cho mọi điểmHoạt động
error bar style={..}màu và độ dày nét của các thanhHoạt động
error mark=.., error mark options={..}phần chặn ở mỗi đầu thanhĐược chấp nhận, nhưng phần chặn luôn là một đoạn thẳng ngắn

Khác biệt so với một bản cài đặt TeX

Tài liệu hướng dẫn pgfplots mô tả thanh sai số trong phần dành riêng cho chúng: ctan.org/pkg/pgfplots.

Xem thêm Biểu đồ cột, Đồ thị phân tán và Dữ liệu từ CSV.

Hỏi và đáp

Làm thế nào để thêm thanh sai số trong pgfplots?

Viết \addplot+[error bars/.cd, y dir=both, y explicit] coordinates {(1,2) +- (0,0.3) ...};. Số thứ hai sau +- là sai số theo y.

Làm thế nào để đọc thanh sai số từ tệp CSV?

Thêm y error=column vào các tùy chọn của bảng, cùng với y explicit trong các tùy chọn của thanh sai số: table[x=a, y=b, y error=c, col sep=comma] {file.csv}.

Thanh sai số phía trên và phía dưới có thể khác nhau không?

Có. Viết += (0, up) và -= (0, down) sau điểm thay cho +-, như trong (1,2) += (0,0.5) -= (0,0.1).

Mọi ví dụ trên trang này đều được Scissor LaTeX dàn trang khi xây dựng trang web. Cập nhật lần cuối 2026-11-07.