رفتن به محتوا

نمودارهای میله‌ای با pgfplots

ybar (میله‌های عمودی) یا xbar (میله‌های افقی) را به یک axis بستهٔ pgfplots اضافه کنید، دسته‌ها را با symbolic x coords نام‌گذاری کنید و هر سری را به صورت یک \addplot با مختصات بدهید.

میله‌های عمودی با دسته‌های نام‌دار

ybar روی محور هر سری را به میله تبدیل می‌کند. symbolic x coords نام دسته‌ها را به ترتیب فهرست می‌کند و xtick=data زیر هر میله یک درجه می‌گذارد.

یک سری میله

\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}

میله‌ها از صفر شروع می‌شوند. بدون ymin=0 محور کمی فضا زیر صفر اضافه می‌کند، پس آن را تنظیم کنید تا میله‌ها روی قاب بایستند. enlarge x limits در دو طرف فضا اضافه می‌کند تا میله‌های بیرونی با قاب بریده نشوند.

میله‌های گروهی و برچسب مقدار

با چند سری، میله‌های هر دسته کنار هم می‌ایستند. nodes near coords هر مقدار را بالای میله‌اش چاپ می‌کند و bar width عرض را تعیین می‌کند (به طور پیش‌فرض 10pt).

دو سری، با مقدارها روی میله‌ها

\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}
حروف‌چینی با Scissor LaTeX: دو سری، با مقدارها روی میله‌ها

ybar=4pt فاصلهٔ بین میله‌های یک گروه را تعیین می‌کند (به طور پیش‌فرض 2pt).

میله‌های انباشته

ybar stacked سری‌ها را به جای کنار هم، روی هم می‌گذارد. \addplot دوم از جایی شروع می‌شود که اولی تمام می‌شود.

میله‌های انباشته برای هر فصل

\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}

میله‌های افقی

xbar میله‌ها را از چپ به راست می‌کشد. نقش محورها را جابه‌جا کنید: دسته‌ها در symbolic y coords و ytick=data می‌آیند و هر مختصات به صورت (مقدار، دسته) نوشته می‌شود.

میله‌های افقی

\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 هم کار می‌کند.

عددها به عنوان دسته

سال‌ها و عددهای دیگر به symbolic x coords نیاز ندارند: آن‌ها را به صورت عدد رسم کنید و xtick=data را به کار ببرید. pgfplots به طور پیش‌فرض 2024 را به صورت «2,024» می‌نویسد؛ جداکنندهٔ هزارگان را در سبک برچسب درجه‌ها خاموش کنید.

سال‌ها روی محور x

\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}

گزینه‌ها در یک نگاه

گزینهکارشدر Scissor LaTeX
ybar، xbarمیله‌های عمودی یا افقی، کنار همکار می‌کند
ybar=4ptفاصلهٔ بین میله‌های یک گروهکار می‌کند
ybar stacked، xbar stackedمیله‌ها روی همروی محورهای خطی کار می‌کند
bar width=12ptعرض هر میلهکار می‌کند
bar shift=..جابه‌جا کردن یک سری به پهلوکار می‌کند
nodes near coordsمقدار بالای (یا کنار) هر میلهکار می‌کند
symbolic x coords، symbolic y coordsدسته‌های نام‌دارکار می‌کند، جز نام‌هایی که شبیه عدد هستند (بدون برچسب درجه)
xticklabel style={rotate=45, anchor=east}نام دسته‌های مایلکار می‌کند
ybar intervalمیله‌هایی که فضای بین مقدارهای x را پر می‌کنندتا حدی: به صورت میله‌های معمولی روی مقدارهای x کشیده می‌شوند
hist (کتابخانهٔ statistics)شمردن مقدارها در بازه‌هاپشتیبانی نمی‌شود: با یک پیام نادیده گرفته می‌شود و مقدارهای خام به صورت خط کشیده می‌شوند

تفاوت‌ها با یک نصب TeX

همهٔ مثال‌های این صفحه با pgfplots در یک نصب TeX هم کامپایل می‌شوند. راهنما: ctan.org/pkg/pgfplots.

همچنین ببینید: مبانی pgfplots، میله‌های خطا، داده از CSV و pgfplots.

پرسش و پاسخ

چطور در LaTeX نمودار میله‌ای بسازم؟

pgfplots را بارگذاری کنید و بنویسید \begin{axis}[ybar, symbolic x coords={A,B,C}, xtick=data] و برای هر سری یک \addplot coordinates {(A,3) (B,5) (C,2)};.

چطور مقدارها را بالای میله‌ها نشان دهم؟

nodes near coords را به گزینه‌های محور اضافه کنید. هر میله مقدارش را به صورت برچسب می‌گیرد.

چطور کاری کنم که میله‌ها از صفر شروع شوند؟

آن‌ها از قبل از صفر شروع می‌شوند. ymin=0 را روی محور تنظیم کنید (یا برای xbar، xmin=0) تا فضای زیرشان برداشته شود.

هر مثال این صفحه هنگام ساخت سایت با Scissor LaTeX حروف‌چینی می‌شود. آخرین به‌روزرسانی: 2026-11-07.