ybar stacked
当我使用选项和新闻纸背景请求编译以下代码时,编译器告诉我
! Extra }, or forgotten \endgroup.
\endpgfonlayer ->\endgroup \hss \egroup
\endgroup
l.31 \end{axis}
当我仅使用 进行编译时,ybar
我得到了我期望的结果,即背景图像。当我使用 进行编译ybar stacked
并将背景请求注释掉时,我得到了我期望的结果。
这是我的 MWE。请注意,该图毫无意义,也没有任何可堆叠的内容。堆叠与真实数据和标签配合得很好,我删除了它们以隔离问题并最小化 MWE。(这花了我很长时间。)
TeX 版本:
$ pdflatex -version
MiKTeX-pdfTeX 2.9.4535 (1.40.13) (MiKTeX 2.9)
代码:
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepackage{pgfplotstable}
%deal with warning message in log
\pgfplotsset{compat=1.8}
\newcommand{\images}{../images}
\begin{document}
\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\pgfplotstableread[col sep=comma]{
category, mass, other
{dollars\\\$3.14m}, 31, 69
}\warren
\begin{tikzpicture}
\begin{axis}[
ybar stacked,
% ybar,
]
\addplot table [x expr =\coordindex, y=mass] {\warren};
% with the following lines in place
% compilation fails with ybar stacked, works with ybar
\begin{pgfonlayer}{background}
\node{\includegraphics{\images/newsprint}};
\end{pgfonlayer}
\end{axis}
\end{tikzpicture}
\end{document}
看在共同背景下合并 pgfplots当问题得到解答后,背景会是什么样子。
答案1
在 axis 环境pgfplots
规则内。它的工作原理与 TikZ 略有不同,因此 TikZ 解析需要以协作的方式放置pgfplots
。此外,pgfplots 在操作中具有不同的分层,因此您也需要向它介绍您使用 TikZ 所做的事情。
Jake 在链接问题中所做的是留在轴环境之外并对背景层进行操作,然后使用轴环境。这与潜入pgfplots
层不同。
\documentclass{standalone}
\usepackage{pgfplots,mwe}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8,set layers}
\pgfplotstableread[col sep=comma]{
category, mass, other
{dollars\\\$3.14m}, 31, 69
{dollars\\\$3.14m}, 31, 18
{dollars\\\$3.14m}, 34, 40
{dollars\\\$3.14m}, 34, 20
}\warren
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar stacked,
% ybar,
]
\addplot+[] table [x=mass, y=other] {\warren};
\pgfplotsextra{\begin{scope}[on layer=axis background]
\node at (axis cs:32.5,50) {\includegraphics[scale=0.5]{example-image-a}};
\end{scope}
}
\end{axis}
\end{tikzpicture}
\end{document}