我有几个 ybar 堆叠图,我想将它们放在一个图中。
但是,由于不同图的 ybar 共享相同的坐标,当我将它们放在一个图中时,它们只会堆叠成一个 ybar。但是,我希望原始堆叠的 ybar 在给定坐标处并排显示(就像非堆叠的 ybar 一样)。
有人知道该怎么做吗?
答案1
很简单:使用两个axis
环境,稍微移动一下条形图。如果你很挑剔,那么你需要unit vector ratio
稍微改变其中一个图的。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=8cm,
unit vector ratio=1 0.5,
symbolic x coords={a,b,c,d,e},
xtick=data,
ybar stacked,
ytick pos=left,
]
\addplot[ybar,fill=blue!30,mark=no,bar shift=-3mm] coordinates {
(a,3.5)
(b,0.75)
(c,4.85)
(d,3.33)
(e,7)
};
\addplot[ybar,fill=orange,mark=no,bar shift=-3mm] coordinates {
(a,2.5)
(b,1.75)
(c,1.85)
(d,2.33)
(e,1)
};
\end{axis}
\begin{axis}[ytick=\empty,
width=8cm,
unit vector ratio=1 0.5,
symbolic x coords={a,b,c,d,e},
xtick=data,
ybar stacked,
ytick pos=left,
]
\addplot[ybar,fill=green!30,mark=no,bar shift=3mm] coordinates {
(a,2.5)
(b,1.75)
(c,1.85)
(d,2.33)
(e,1)
};
\addplot[ybar,fill=red,mark=no,bar shift=3mm] coordinates {
(a,3.5)
(b,0.75)
(c,4.85)
(d,3.33)
(e,7)
};
\end{axis}
\end{tikzpicture}
\end{document}