TikZ:节点与另一个节点位于相同的 x 坐标,但指定了 y 坐标?

TikZ:节点与另一个节点位于相同的 x 坐标,但指定了 y 坐标?

在 TikZ 中,如果我有一个节点(A),如何创建一个具有与(A)相同的 x 坐标但给定 y 坐标的节点(B)?

答案1

您可以使用let语法,该语法允许您将节点坐标保存到宏中\p<number>,然后使用\x<number>和访问其组件\y<number>。这需要calc加载库。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
\draw [help lines] (0,0) grid (4,4);
\node (A) at (2,1) {A};
\path let \p1 = (A) in node  at (\x1,3) {B};
\end{tikzpicture}

\end{document}

pgf let 语法

答案2

甚至比 let 语法更简单,我最近成为了交叉坐标系的粉丝;这个例子在技术上是一个垂直交叉系统(参见 2.10 手册的 13.3)。(代码根据 Jake 的回答修改。)

\begin{tikzpicture}
\draw [help lines] (0,0) grid (4,4);
\node (A) at (2,1) {A};
%\path let \p1 = (A) in node  at (\x1,3) {B};
\draw (A |- 52,3) node {B};
\end{tikzpicture}

第一个坐标提供 x 值,第二个坐标提供 y 值。(因此,在这种特定用法中,上面的“52”被丢弃可能有点违反直觉。)

答案3

另一个选项是,您可以使用 shift 放置节点。这里有一些示例。

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw [help lines] (0,0) grid (4,4);
\node (A) at (2,1) {A};
\path ([yshift=2cm]A) node {B};
\node (C) at ([yshift=1cm]A) {C};
\node (D) at ([shift=({1cm,1cm})]A) {D};
\end{tikzpicture}

\end{document}

答案4

另一个答案

\documentclass{article}
\usepackage{tikz}
\makeatletter
\newcommand{\gettikzxy}[3]{%
  \tikz@scan@one@point\pgfutil@firstofone#1\relax
  \edef#2{\the\pgf@x}%
  \edef#3{\the\pgf@y}%
}
\makeatother

%
\begin{document}
%
\begin{tikzpicture}
%Define some point A 
\coordinate (A) at (1,1);
%
%Get x and y coordinates of point A
\gettikzxy{(A)}{\ax}{\ay}
%
%Using x coordinate of point A, define point B
\coordinate (B) at (\ax,4);
\fill[blue] (A) circle (2pt) node [black,right] {A};
\fill[red] (B) circle (2pt) node [black,right] {B};;
%
\end{tikzpicture}
%
\end{document}  

在此处输入图片描述

红点是具有与蓝点相同的 x 坐标和某些 y 坐标的新点。

相关内容