pgfplots:一个图表中的多个(移位)堆叠图

pgfplots:一个图表中的多个(移位)堆叠图

如何在一个图表中获得多个堆叠图(ybar stackedstack plots=y),使得同一 x 坐标有多个堆叠条形图,每个条形图略有偏移? 有没有办法在命令后重置 pgfplot 的零级\addplot,以便下一个命令\addplot[xhshift=...]不会向当前堆栈添加任何内容,而是启动一个新的堆栈?

FWIW,叠加两个图scale only axis不会有帮助;我需要这个来工作groupplot

答案1

我假设您想要“堆积和聚集条形图”。

以下解决方案不是最优雅的,但效果很好。它基本上重置了堆叠的绘图变量并开始堆叠以下绘图。我还没有找到在重置命令后正确重置第一个绘图的零级的方法,这就是为什么我使用一个不可见的绘图,其选项forget plot在所有坐标上都有零值。这不会中断样式循环,但不幸的是,它需要对坐标进行硬编码,如果您事先不知道条形堆栈的数量,它将无法工作。

还有很大的改进空间,但这是一个开始,可能足以让你完成工作。

\documentclass{article}
\usepackage{pgfplots}

\makeatletter
\newcommand\resetstackedplots{
\makeatletter
\pgfplots@stacked@isfirstplottrue
\makeatother
\addplot [forget plot,draw=none] coordinates{(1,0) (2,0) (3,0)};
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    ybar stacked,
    xtick=data,
    ymin=0,
    enlarge x limits=0.5,
    legend entries={A,B,C,D,E}
]
\addplot +[bar shift=-.2cm] coordinates {(1,1) (2,1.75) (3,0.5)};
\addplot +[bar shift=-.2cm] coordinates {(1,0.5) (2,2.5) (3,1.5)};

\resetstackedplots

\addplot  +[bar shift=.2cm]coordinates {(1,1.2) (2,1.5) (3,0.3)};
\addplot  +[bar shift=.2cm] coordinates {(1,0.5) (2,2) (3,1.5)};
\addplot  +[bar shift=.2cm] coordinates {(1,0.2) (2,0.1) (3,0.3)};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容