ybar 堆叠会干扰 tikz 背景

ybar 堆叠会干扰 tikz 背景

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}

在此处输入图片描述

相关内容