pgfplots:轴外的对象被剪裁

pgfplots:轴外的对象被剪裁

当我使用 pgfplots 绘制 3D 轴时,轴外的绘制对象有时会被剪裁,尽管我使用了clip=false。这仅在我使用 TikZ 外部化库时发生,我认为这是由于 pdflatex 将外部 pdf 裁剪到边界框造成的。例如,

\documentclass[border=2pt]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\usetikzlibrary{external}
\tikzexternalize

\begin{document}
\begin{tikzpicture}
    \begin{axis}[xmin=-1,xmax=1,
        ymin=-1,ymax=1,
        zmin=0,zmax=1,
        clip=false]
        \draw (0,0,0) circle (3);
    \end{axis}
\end{tikzpicture}
\end{document}

产生以下外部pdf: 在此处输入图片描述

但是我希望显示整个圆圈。因此,问题是是否有办法自动调整边界框以包含所有绘制的对象。

答案1

您可以保存轴坐标系并重新创建它。

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\begin{document}

\begin{tikzpicture}
    \begin{axis}[xmin=-1,xmax=1,
        ymin=-1,ymax=1,
        zmin=0,zmax=1,
        clip=false]
        \coordinate (origin) at (axis cs: 0,0,0);
        \coordinate (xunit) at (axis cs: 1,0,0);
        \coordinate (yunit) at (axis cs: 0,1,0);
        \coordinate (zunit) at (axis cs: 0,0,1);
    \end{axis}
    \begin{scope}[shift={(origin)}]
      \pgfsetxvec{\pgfpointdiff{\pgfpointanchor{xunit}{center}}%
        {\pgfpointanchor{origin}{center}}}%
      \pgfsetyvec{\pgfpointdiff{\pgfpointanchor{yunit}{center}}%
        {\pgfpointanchor{origin}{center}}}%
      \pgfsetzvec{\pgfpointdiff{\pgfpointanchor{zunit}{center}}%
        {\pgfpointanchor{origin}{center}}}%

      \draw (0,0,0) circle (3);
    \end{scope}
  \draw (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}
\end{document}

演示

相关内容