Chuyển đến nội dung

Đồ thị đường với pgfplots

Thêm một \addplot cho mỗi đường bên trong một axis; định kiểu từng đường bằng các tùy chọn như red, dashed, thick hoặc mark=square*, hoặc để danh sách chu kỳ chọn kiểu cho bạn.

Nhiều đường trên một trục

Mỗi \addplot thêm một chuỗi dữ liệu. Không có tùy chọn, các chuỗi lần lượt lấy kiểu từ danh sách chu kỳ. Với \addplot+[...] bạn giữ kiểu đó và chỉ thay đổi một phần.

Ba chuỗi từ danh sách chu kỳ mặc định

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[xlabel=Week, ylabel=Orders, legend pos=north west]
    \addplot coordinates {(1,12) (2,18) (3,25) (4,31) (5,44)};
    \addplot coordinates {(1,10) (2,14) (3,15) (4,21) (5,24)};
    \addplot+[dashed] coordinates {(1,5) (2,9) (3,8) (4,12) (5,13)};
    \legend{Erika, Hans, John}
  \end{axis}
\end{tikzpicture}
Dàn trang bởi Scissor LaTeX: Ba chuỗi từ danh sách chu kỳ mặc định

Kiểu đường và điểm đánh dấu

Các tùy chọn sau \addplot đặt màu, kiểu đường và điểm đánh dấu. Bạn có thể kết hợp chúng tùy ý.

Tùy chọnGiá trịTrong Scissor LaTeX
màured, blue!60!black, color=teal, mọi tên màu hoặc phối màu của xcolorHoạt động
độ dày đườngultra thin, very thin, thin, semithick, thick, very thick, ultra thick, line width=1.5ptHoạt động
kiểu nétsolid, dashed, dotted, densely dashed, loosely dotted, dashdotted, dash pattern=on 4pt off 2ptHoạt động
mark=*, o, square*, square, triangle*, triangle, diamond*, diamond, x, +, star, pentagon*, asterisk, otimes*, |, -, noneHoạt động
mark size=3ptbán kính của điểm đánh dấuHoạt động
mark options={fill=white}kiểu chỉ áp dụng cho điểm đánh dấuHoạt động
mark repeat=2một điểm đánh dấu trên mỗi điểm thứ haiHoạt động
no marks, only markschỉ đường, chỉ điểm đánh dấuHoạt động

Màu, kiểu nét và điểm đánh dấu

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[domain=0:4, samples=9, legend pos=outer north east]
    \addplot[blue, thick, mark=*] {x};
    \addplot[red, dashed, mark=square*, mark options={fill=white}] {x^1.5/2};
    \addplot[teal, densely dotted, very thick] {sqrt(x)};
    \addplot[orange, mark=triangle*, mark size=3pt, only marks] {4 - x};
    \legend{linear, power, root, falling}
  \end{axis}
\end{tikzpicture}
Dàn trang bởi Scissor LaTeX: Màu, kiểu nét và điểm đánh dấu

Điểm đánh dấu luôn được vẽ bằng nét liền, kể cả trên một chuỗi nét đứt, giống như trong pgfplots.

Chọn danh sách chu kỳ

Danh sách chu kỳ là dãy các kiểu mà những lệnh \addplot không có tùy chọn sử dụng. Chọn một danh sách có sẵn bằng cycle list name, hoặc tự viết bằng cycle list.

Danh sách chu kỳ black white và một danh sách tự tạo

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[cycle list name=black white, width=6.5cm, height=5cm, title={black white}]
    \addplot coordinates {(0,0) (1,1) (2,4)};
    \addplot coordinates {(0,1) (1,2) (2,2)};
    \addplot coordinates {(0,2) (1,0) (2,1)};
  \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
  \begin{axis}[cycle list={{red, thick}, {blue, dashed}}, width=6.5cm, height=5cm, title={custom}]
    \addplot coordinates {(0,0) (1,1) (2,4)};
    \addplot coordinates {(0,1) (1,2) (2,2)};
  \end{axis}
\end{tikzpicture}
Dàn trang bởi Scissor LaTeX: Danh sách chu kỳ black white và một danh sách tự tạo

Các tên có sẵn hoạt động được: color (mặc định), exotic, black white, mark list và linestyles. \pgfplotscreateplotcyclelist{name}{...} trong phần mở đầu định nghĩa một danh sách bạn có thể dùng lại.

Đường cong mượt và bậc thang

smooth vẽ một đường cong đi qua các điểm thay vì các đoạn thẳng; tension (mặc định 0.55) điều chỉnh độ cong. const plot vẽ một hàm bậc thang giữ nguyên mỗi giá trị cho đến điểm tiếp theo.

smooth và const plot

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+[smooth] coordinates {(0,1) (1,2.5) (2,1.8) (3,3.2) (4,2.4)};
    \addplot+[const plot] coordinates {(0,0.5) (1,1) (2,1.5) (3,1.2) (4,2)};
    \legend{smooth, const plot}
  \end{axis}
\end{tikzpicture}

Hàm số theo độ và radian

Công thức dùng pgfmath: + - * / ^, dấu ngoặc, sqrt, exp, ln, abs, min, max, sin, cos, tan và nhiều hàm khác, với pi và e là hằng số. Góc tính theo độ, nên hãy đổi radian bằng deg(x).

sin và cos trong một chu kỳ

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[domain=0:2*pi, samples=80, xlabel=$t$,
               xtick={0,1.5708,3.1416,4.7124,6.2832},
               xticklabels={$0$,$\frac{\pi}{2}$,$\pi$,$\frac{3\pi}{2}$,$2\pi$},
               legend pos=south west]
    \addplot[blue, thick] {sin(deg(x))};
    \addplot[red, thick, dashed] {cos(deg(x))};
    \legend{$\sin t$, $\cos t$}
  \end{axis}
\end{tikzpicture}

Đường cong tham số

Để vẽ một đường cong cho bởi x(t) và y(t), hãy viết cả hai công thức trong ngoặc tròn, cách nhau bằng dấu phẩy, và đặt variable=t.

Một đường cong Lissajous

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[axis lines=middle, xmin=-1.3, xmax=1.3, ymin=-1.3, ymax=1.3]
    \addplot[purple, thick, domain=0:360, samples=120, variable=t]
      ({cos(t)}, {sin(2*t)});
  \end{axis}
\end{tikzpicture}

Chỗ ngắt trên đường cong

Một hàm như 1/x vọt lên vô cùng. restrict y to domain loại bỏ các điểm nằm ngoài một khoảng, và unbounded coords=jump ngắt đường tại đó thay vì nối hai nhánh với nhau. Đặt cả hai trên \addplot.

1/x với một chỗ ngắt tại 0

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[ymin=-10, ymax=10, axis lines=middle]
    \addplot[blue, thick, domain=-3:3, samples=200,
             restrict y to domain=-10:10, unbounded coords=jump] {1/x};
  \end{axis}
\end{tikzpicture}

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

Tài liệu hướng dẫn pgfplots trên CTAN mô tả mọi tùy chọn: ctan.org/pkg/pgfplots. Với các điểm không có đường nối, xem đồ thị phân tán.

Xem thêm pgfplots cơ bản, Trục logarit, Nhóm đồ thị và Dữ liệu từ CSV.

Hỏi và đáp

Làm thế nào để vẽ một hàm số trong LaTeX?

Viết \addplot[domain=a:b, samples=n] {formula}; bên trong một axis, dùng x làm biến, ví dụ {x^2 - 1}.

Làm thế nào để bỏ điểm đánh dấu khỏi một đường?

Thêm no marks vào các tùy chọn của \addplot, hoặc đưa tùy chọn mà không có + (ví dụ \addplot[blue]), khi đó đường được vẽ trơn.

Vì sao sin(x) trông gần như nằm ngang?

pgfplots đọc góc theo độ, nên sin(x) trên khoảng 0 đến 6 chỉ bao phủ 6 độ. Hãy viết sin(deg(x)).

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.