Langkau ke kandungan

Carta bar dengan pgfplots

Tambah ybar (bar menegak) atau xbar (bar mendatar) pada axis pgfplots, namakan kategori dengan symbolic x coords, dan berikan setiap siri sebagai \addplot dengan koordinat.

Bar menegak dengan kategori bernama

ybar pada paksi menukar setiap siri menjadi bar. symbolic x coords menyenaraikan nama kategori mengikut urutan, dan xtick=data meletakkan satu tanda di bawah setiap bar.

Satu siri bar

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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}

Bar bermula pada sifar. Tanpa ymin=0 paksi menambah sedikit ruang di bawah sifar, jadi tetapkannya supaya bar berdiri di atas bingkai. enlarge x limits menambah ruang di sisi, supaya bar paling luar tidak dipotong oleh bingkai.

Bar berkumpulan dan label nilai

Dengan beberapa siri, bar bagi setiap kategori berdiri bersebelahan. nodes near coords mencetak setiap nilai di atas barnya, dan bar width menetapkan lebar (10pt secara lalai).

Dua siri, dengan nilai pada bar

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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}
Disusun atur oleh Scissor LaTeX: Dua siri, dengan nilai pada bar

ybar=4pt menetapkan jarak antara bar dalam satu kumpulan (2pt secara lalai).

Bar bertindan

ybar stacked meletakkan siri di atas satu sama lain dan bukannya bersebelahan. \addplot kedua bermula di tempat yang pertama berakhir.

Bar bertindan mengikut suku tahun

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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}

Bar mendatar

xbar melukis bar dari kiri ke kanan. Tukar peranan paksi: kategori diletakkan dalam symbolic y coords dan ytick=data, dan setiap koordinat ditulis sebagai (nilai, kategori).

Bar mendatar

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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 juga berfungsi.

Nombor sebagai kategori

Tahun dan nombor lain tidak memerlukan symbolic x coords: plotkannya sebagai nombor dan gunakan xtick=data. pgfplots menulis 2024 sebagai "2,024" secara lalai; matikan pemisah ribuan dalam gaya label tanda.

Tahun pada paksi x

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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}

Pilihan secara ringkas

PilihanFungsinyaDalam Scissor LaTeX
ybar, xbarbar menegak atau mendatar, bersebelahanBerfungsi
ybar=4ptjarak antara bar dalam satu kumpulanBerfungsi
ybar stacked, xbar stackedbar di atas satu sama lainBerfungsi pada paksi linear
bar width=12ptlebar setiap barBerfungsi
bar shift=..menganjakkan siri ke tepiBerfungsi
nodes near coordsnilai di atas (atau di sebelah) setiap barBerfungsi
symbolic x coords, symbolic y coordskategori bernamaBerfungsi, kecuali nama yang kelihatan seperti nombor (tiada label tanda)
xticklabel style={rotate=45, anchor=east}nama kategori yang condongBerfungsi
ybar intervalbar yang mengisi ruang antara nilai xSebahagian: dilukis sebagai bar biasa pada nilai x
hist (pustaka statistics)mengira nilai ke dalam binTidak disokong: diabaikan dengan mesej, nilai mentah dilukis sebagai garis

Perbezaan dengan pemasangan TeX

Semua contoh di halaman ini juga dikompil dengan pgfplots dalam pemasangan TeX. Manual: ctan.org/pkg/pgfplots.

Lihat juga Asas pgfplots, Bar ralat, Data daripada CSV dan pgfplots.

Soalan dan jawapan

Bagaimanakah cara membuat carta bar dalam LaTeX?

Muatkan pgfplots dan tulis \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] dengan satu \addplot coordinates {(A,3) (B,5) (C,2)}; bagi setiap siri.

Bagaimanakah cara menunjukkan nilai di atas bar?

Tambah nodes near coords pada pilihan paksi. Setiap bar mendapat nilainya sebagai label.

Bagaimanakah cara membuat bar bermula pada sifar?

Bar memang bermula pada sifar. Tetapkan ymin=0 pada paksi (atau xmin=0 untuk xbar) untuk membuang ruang di bawahnya.

Setiap contoh di halaman ini disusun atur oleh Scissor LaTeX semasa laman dibina. Kali terakhir dikemas kini 2026-11-07.