![pgfplots,TikZ 互操作性和轴相等](https://linux22.com/image/303960/pgfplots%EF%BC%8CTikZ%20%E4%BA%92%E6%93%8D%E4%BD%9C%E6%80%A7%E5%92%8C%E8%BD%B4%E7%9B%B8%E7%AD%89.png)
pgfplots 手册第 4.27 节解释了如何匹配 pgfplots 和 Ti钾Z 单位向量和原点。这表明:
- 通过
x
和y
键配置匹配单位向量。Ti 的默认配置钾Z 表示使用x=1cm,y=1cm,z={(0,0)}
。请注意,这些设置通常会被 pgfplots 覆盖,以尊重width
和height
(view
对于三维轴)。
所以我知道,如果你想匹配两个坐标系,你必须明确设置三个单位向量。现在假设我想改用键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 equal
3D 原点映射到 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 的缩放变换)。