pgfplots,TikZ 互操作性和轴相等

pgfplots,TikZ 互操作性和轴相等

pgfplots 手册第 4.27 节解释了如何匹配 pgfplots 和 TiZ 单位向量和原点。这表明:

  1. 通过xy键配置匹配单位向量。Ti 的默认配置Z 表示使用x=1cm,y=1cm,z={(0,0)}。请注意,这些设置通常会被 pgfplots 覆盖,以尊重widthheightview对于三维轴)。

所以我知道,如果你想匹配两个坐标系,你必须明确设置三个单位向量。现在假设我想改用键view。我注意到,如果我axis equal也使用该选项,原点不再与 2D 原点匹配(我的意思是默认 2D Ti 的原点Z坐标系)。看下面的例子:

\documentclass[border=1mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\begin{document}
\begin{tikzpicture}
\begin{axis} [
  anchor=origin,
  at={(0,0)},
  disabledatascaling,
  view={135}{35.26},
  axis equal, % <-- this is the problem
]
\addplot3+ [only marks] coordinates {(0,0,0)};
\addplot3 [draw=none] coordinates {(1,1,1) (-1,-1,-1)};
\draw [blue] (0,0,0) node [above] {This is the 3D origin};
\fill [red, x=1cm, y=1cm] (0,0) circle (2pt) node [below] {This is the 2D origin};

\pgftransformshift{\pgfpointxyz{0}{0}{0}}
\pgfnode{coordinate}{center}{}{a}{}
\draw [thick] (a) circle (2pt);
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

如果删除该axis equal选项,两个来源将匹配。我想知道问题是什么,以及是否有任何解决方法可以解决此问题。

答案1

我认为这里有两个问题:第一个是对 MWE 中出现的红点的解释;第二个是确保将axis equal3D 原点映射到 TikZ 的 2D 原点。

听起来像是一个问题,但实际上却是两个独立的问题:如果你移动\fill[red,...]指令外部轴的(但在 内tikzpicture),两个原点重叠(如所希望的)。

关于第一个问题(为什么这些点位于不同的位置):似乎x=1m, y=1cm轴内的指令混淆了代码,这确保了 pgfplots 集成到 tikz 中,而它有自己的坐标系。请记住,(0,0)结合compat=1.11意味着(axis cs:0,0)隐式使用。但这似乎也(axis cs:0,0)与 3d 轴内不同(axis cs:0,0,0)。我会研究它(也许没有应用 z 的缩放变换)。

相关内容