Chuyển đến nội dung

Biểu đồ cột với pgfplots

Thêm ybar (cột đứng) hoặc xbar (cột ngang) vào một axis của pgfplots, đặt tên các danh mục bằng symbolic x coords, và đưa mỗi chuỗi dưới dạng một \addplot có tọa độ.

Cột đứng với danh mục có tên

ybar trên trục biến mọi chuỗi thành các cột. symbolic x coords liệt kê tên các danh mục theo thứ tự, và xtick=data đặt một vạch chia dưới mỗi cột.

Một chuỗi cột

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[
      ybar, ymin=0,
      symbolic x coords={Mon, Tue, Wed, Thu, Fri},
      xtick=data,
      ylabel={Visitors},
      enlarge x limits=0.15,
    ]
    \addplot coordinates {(Mon,44) (Tue,31) (Wed,38) (Thu,27) (Fri,40)};
  \end{axis}
\end{tikzpicture}

Các cột bắt đầu từ không. Nếu không có ymin=0, trục thêm một chút khoảng trống dưới mức không, nên hãy đặt nó để các cột đứng trên khung. enlarge x limits thêm khoảng trống ở hai bên, để các cột ngoài cùng không bị khung cắt.

Cột nhóm và nhãn giá trị

Với nhiều chuỗi, các cột của mỗi danh mục đứng cạnh nhau. nodes near coords in mỗi giá trị phía trên cột của nó, và bar width đặt độ rộng cột (mặc định 10pt).

Hai chuỗi, có giá trị trên các cột

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[
      ybar, ymin=0, ymax=55, bar width=12pt,
      symbolic x coords={Erika, Hans, John},
      xtick=data, enlarge x limits=0.25,
      nodes near coords,
      ylabel={Points},
      legend style={at={(0.5,-0.12)}, anchor=north, legend columns=2},
    ]
    \addplot coordinates {(Erika,44) (Hans,31) (John,38)};
    \addplot coordinates {(Erika,40) (Hans,36) (John,29)};
    \legend{Round 1, Round 2}
  \end{axis}
\end{tikzpicture}
Dàn trang bởi Scissor LaTeX: Hai chuỗi, có giá trị trên các cột

ybar=4pt đặt khoảng cách giữa các cột trong một nhóm (mặc định 2pt).

Cột xếp chồng

ybar stacked đặt các chuỗi chồng lên nhau thay vì cạnh nhau. \addplot thứ hai bắt đầu tại nơi \addplot thứ nhất kết thúc.

Cột xếp chồng theo quý

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[
      ybar stacked, ymin=0, bar width=16pt,
      symbolic x coords={Q1, Q2, Q3, Q4},
      xtick=data, enlarge x limits=0.2,
      legend pos=north west, ylabel={Sales},
    ]
    \addplot coordinates {(Q1,12) (Q2,18) (Q3,15) (Q4,22)};
    \addplot coordinates {(Q1,6) (Q2,9) (Q3,12) (Q4,10)};
    \legend{Online, In store}
  \end{axis}
\end{tikzpicture}

Cột ngang

xbar vẽ các cột từ trái sang phải. Hãy hoán đổi vai trò của hai trục: các danh mục nằm trong symbolic y coords và ytick=data, và mỗi tọa độ được viết dưới dạng (giá trị, danh mục).

Cột ngang

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[
      xbar, xmin=0, xmax=50,
      symbolic y coords={Rust, Python, C},
      ytick=data, enlarge y limits=0.3,
      nodes near coords, xlabel={Projects},
      width=8cm, height=5cm,
    ]
    \addplot coordinates {(44,Rust) (31,Python) (12,C)};
  \end{axis}
\end{tikzpicture}

xbar stacked cũng hoạt động.

Số làm danh mục

Năm và các số khác không cần symbolic x coords: hãy vẽ chúng như số và dùng xtick=data. pgfplots mặc định viết 2024 thành "2,024"; hãy tắt dấu phân cách hàng nghìn trong kiểu nhãn vạch chia.

Các năm trên trục x

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \begin{axis}[
      ybar, ymin=0, xtick=data, enlarge x limits=0.25,
      x tick label style={/pgf/number format/1000 sep=},
    ]
    \addplot coordinates {(2023,18) (2024,31) (2025,44)};
  \end{axis}
\end{tikzpicture}

Tổng quan các tùy chọn

Tùy chọnTác dụngTrong Scissor LaTeX
ybar, xbarcột đứng hoặc cột ngang, đặt cạnh nhauHoạt động
ybar=4ptkhoảng cách giữa các cột trong một nhómHoạt động
ybar stacked, xbar stackedcác cột chồng lên nhauHoạt động trên trục tuyến tính
bar width=12ptđộ rộng của mỗi cộtHoạt động
bar shift=..dịch một chuỗi sang bênHoạt động
nodes near coordsgiá trị phía trên (hoặc bên cạnh) mỗi cộtHoạt động
symbolic x coords, symbolic y coordsdanh mục có tênHoạt động, trừ những tên trông giống số (không có nhãn vạch chia)
xticklabel style={rotate=45, anchor=east}tên danh mục viết nghiêngHoạt động
ybar intervalcác cột lấp đầy khoảng giữa các giá trị xMột phần: được vẽ như cột thường tại các giá trị x
hist (thư viện statistics)đếm giá trị vào các khoảngKhông hỗ trợ: bị bỏ qua kèm thông báo, các giá trị thô được vẽ thành một đường

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

Mọi ví dụ trên trang này cũng biên dịch được với pgfplots trong một bản cài đặt TeX. Tài liệu hướng dẫn: ctan.org/pkg/pgfplots.

Xem thêm pgfplots cơ bản, Thanh sai số, Dữ liệu từ CSV và pgfplots.

Hỏi và đáp

Làm thế nào để vẽ biểu đồ cột trong LaTeX?

Nạp pgfplots và viết \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] với một \addplot coordinates {(A,3) (B,5) (C,2)}; cho mỗi chuỗi.

Làm thế nào để hiển thị giá trị trên đầu các cột?

Thêm nodes near coords vào các tùy chọn của trục. Mỗi cột sẽ có giá trị của nó làm nhãn.

Làm thế nào để các cột bắt đầu từ không?

Chúng vốn đã bắt đầu từ không. Đặt ymin=0 trên trục (hoặc xmin=0 với xbar) để bỏ khoảng trống bên dưới chúng.

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.