tikzpicture 中 pgf 图轴的位置和大小 - 使用 tikz 定位库?

tikzpicture 中 pgf 图轴的位置和大小 - 使用 tikz 定位库?

这可能是在 tikzpicture 中定位 pgfplots 轴我猜;考虑以下 MWE:

\documentclass{standalone}

\usepackage{pgfplots}
\usetikzlibrary{positioning}

\pagecolor{yellow!15}
\begin{document}
\begin{tikzpicture}

\tikzstyle{nn} = [rectangle,draw,minimum width=4cm,minimum height=2cm,line width=1pt,inner sep=0pt]
\tikzstyle{ni} = [rectangle,draw,minimum width=2cm,minimum height=2cm,draw=red]

\node[nn,anchor=south west] (nodeOne) at (0,0) {One};
\node[nn,rotate=90] (nodeTwo) [right=6cm of nodeOne] {\emph{Two}} ;

\node[ni]
  (nodeIndicator) [above right=0cm and 1.5cm of nodeOne] {} ;

\begin{axis}[%
%   at={(nodeOne)}, % passes
%   at={above right=0cm and 1.5cm of nodeOne}, % tikz Error: Cannot parse this coordinate.
  above right=0cm and 1.5cm of nodeOne, % passes, but wrong?
  inner sep=0pt,
  width=4cm,
  height=3cm,
]
\addplot coordinates { (0,0) (1,1) } ;
\end{axis}

% graphical rulers in tikz - via grid:

% x ruler:
\draw[red] (0,0) grid[step=1cm] ({current bounding box.east|-(0cm,0.5cm);});
% y ruler:
\draw[red] (0,0) grid[step=1cm] ({current bounding box.north-|(0.5cm,0cm);});


\end{tikzpicture}
\end{document}

它产生以下输出:

测试01.png

可以看出,above right=0cm and 1.5cm of nodeOne由于positioning库的原因,语法在的情况下按预期工作nodeIndicator

但是,如果我在环境中使用相同的构造{axis},它将被完全忽略!所以我的问题是 - 如何positioning在 pgfplots{axis}环境中使用库语法?

第二 - 我刚刚在这个 MWE 上注意到了这一点 - 您可以看到,即使我width=4cm,height=3cm为环境指定,渲染的图也要小得多(这就是添加标尺的原因)。在环境的情况下,和{axis}应该指什么大小?(它不是内部图;也不是内部图+轴刻度标签......也与此相关:widthheight{axis}如何正确缩放具有 `\begin{axis}...\end{axis}` 的 TikZ/PGF 图片

答案1

我不知道为什么该语法不起作用,但您可以使用calc库的语法。虽然不完全相同,但它确实允许您相对于其他节点/坐标放置轴。请注意,的默认值anchoraxissouth west如果需要,请更改。

在下面的代码中,我使用了at={($(nodeOne)+(0cm,1.5cm)$)}。当没有提供节点的锚点(例如nodeOne.west)时,则假定锚点。如您所见,的center左下角( )位于 中心上方 1.5 厘米处。anchor=south westaxisnodeOne

在此处输入图片描述

\documentclass{standalone}

\usepackage{pgfplots}
\usetikzlibrary{positioning,calc}

\pagecolor{yellow!15}
\begin{document}
\begin{tikzpicture}

\tikzset{
nn/.style={rectangle,draw,minimum width=4cm,minimum height=2cm,line width=1pt,inner sep=0pt},
ni/.style={rectangle,draw,minimum width=2cm,minimum height=2cm,draw=red}}

\node[nn,anchor=south west] (nodeOne) at (0,0) {One};
\node[nn,rotate=90] (nodeTwo) [right=6cm of nodeOne] {\emph{Two}} ;

\node[ni]
  (nodeIndicator) [above right=0cm and 1.5cm of nodeOne] {} ;

\begin{axis}[%
  at={($(nodeOne)+(0cm,1.5cm)$)},
  anchor=south west,
  inner sep=0pt,
  width=4cm,
  height=3cm,
  scale only axis
]
\addplot coordinates { (0,0) (1,1) } ;
\end{axis}

% graphical rulers in tikz - via grid:

% x ruler:
\draw[red] (0,0) grid[step=1cm] ({current bounding box.east|-(0cm,0.5cm);});
% y ruler:
\draw[red] (0,0) grid[step=1cm] ({current bounding box.north-|(0.5cm,0cm);});


\end{tikzpicture}
\end{document}

相关内容