نمودارهای میلهای با 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}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.