![pgfplots:一个图表中的多个(移位)堆叠图](https://linux22.com/image/235522/pgfplots%EF%BC%9A%E4%B8%80%E4%B8%AA%E5%9B%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%A4%9A%E4%B8%AA%EF%BC%88%E7%A7%BB%E4%BD%8D%EF%BC%89%E5%A0%86%E5%8F%A0%E5%9B%BE.png)
如何在一个图表中获得多个堆叠图(ybar stacked
,stack 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}