当我使用 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}
但是我希望显示整个圆圈。因此,问题是是否有办法自动调整边界框以包含所有绘制的对象。
答案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}