在同一坐标处并排堆叠的多个 ybar

在同一坐标处并排堆叠的多个 ybar

我有几个 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}

在此处输入图片描述

相关内容