绘制一个映射图来显示两个集合之间的关系?

绘制一个映射图来显示两个集合之间的关系?

如下图所示:

在此处输入图片描述

我尝试使用环境绘制它table,但无法正确插入倾斜箭头!自定义这个有用的答案,我到达了:

 \documentclass[a4paper,12pt]{book}
 \usepackage{tikz}
 \usepackage{graphicx}  
 \usetikzlibrary{positioning}
 \begin{document}
 \begin{figure}[htbp]
 \centering
 \begin{tikzpicture}    
    [
    mydot/.style={circle, fill, inner sep=1pt }, >=latex, shorten >= 3pt, shorten <= 3pt
    ]
    \node[mydot,label={left:8}] (a1) {}; 
    \node[mydot,below=of a1,label={left:9}] (a2) {}; 
    \node[mydot,below=of a2,label={left:10}] (a3) {}; 
    
    \node[mydot,right=1cm of a1,label={right:0}] (b1) {}; 
    \node[mydot,below=of b1,label={right:1}] (b2) {}; 
    \node[mydot,below=of b2,label={right:2}] (b3) {}; 
    \node[mydot,below=of b3,label={right:3}] (b4) {}; 
    \path[->] (a1) edge (b1);
    \path[->] (a2) edge (b2) edge (b3);
    \path[->] (a3) edge (b4);
\end{tikzpicture}
\end{figure}
\end{document}

我可以以某种方式插入标题:DomainRange在 MWE 上方内部吗?或者我应该以其他方式工作?在此 MWE 中,节点彼此并不像预期的那样靠近。

感谢您的时间!

答案1

如何在方程和矩阵中添加箭头?了解其工作原理。

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}
\usepackage{tikz}
\newcommand\tikznode[3][]{%
  \tikz[remember picture,baseline=(#2.base)]
    \node[minimum size=0pt,inner sep=0pt,#1](#2){#3};%
}
\begin{document}
\begin{tabular}{cc}
  \toprule
  Domain & Range \\
  \midrule
  \tikznode{n8}{8}   & \tikznode{n0}{0}\\
  \tikznode{n9}{9}   & \tikznode{n1}{1}\\
                     & \tikznode{n2}{2}\\
  \tikznode{n10}{10} & \tikznode{n3}{3}\\
  \bottomrule
\end{tabular}
\begin{tikzpicture}[remember picture,overlay,
  shorten <=2pt,shorten >=2pt,>=stealth]
  \draw[->] (n8) -- (n0);
  \draw[->] (n9) -- (n1);
  \draw[->] (n9) -- (n2);
  \draw[->] (n10) -- (n3);
\end{tikzpicture}
\end{document}

答案2

一个简单的答案tikz-cd

\documentclass{article}
\usepackage{amsmath,tikz-cd}

\begin{document}

\begin{tikzcd}[row sep=0ex]
\hline
\text{Domain} & \text{Range} \\
\hline
8 \ar[r] & 0 \\
9 \ar[r] \ar[rd] & 1 \\
 & 2 \\
10 \ar[r] & 3 \\
\hline
\end{tikzcd}

\end{document}

在此处输入图片描述

答案3

这里有一个替代方案nicematrix

在此处输入图片描述

\documentclass{article}

\usepackage{nicematrix, tikz}

\begin{document}

\begin{NiceTabular}{cc}
\hline
Domain & Range\\ \hline
8 & 0\\
9 & 1\\
  & 2\\
10 & 3\\ \hline
\CodeAfter
  \tikz{ 
    \draw[-stealth](2-1)--(2-2);
    \draw[-stealth](3-1)--(3-2);
    \draw[-stealth](3-1)--(4-2);
    \draw[-stealth](5-1)--(5-2);
  }  
\end{NiceTabular}

\end{document}

booktabs您可以使用命令\toprule\bottomrule和来增加间距\midrule

在此处输入图片描述

\documentclass{article}

\usepackage{nicematrix, booktabs, tikz}

\begin{document}

\begin{NiceTabular}{cc}
\toprule
Domain & Range\\ \midrule
8 & 0\\
9 & 1\\
  & 2\\
10 & 3\\ \bottomrule
\CodeAfter
  \tikz{ 
    \draw[-stealth](2-1)--(2-2);
    \draw[-stealth](3-1)--(3-2);
    \draw[-stealth](3-1)--(4-2);
    \draw[-stealth](5-1)--(5-2);
  }  
\end{NiceTabular}

\end{document}

答案4

还有另一个 Tikz 解决方案matrix

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
\matrix (A) [matrix of nodes]
{ \hline
Domain & Range \\ 
\hline
 8 & 0 \\
 9 & 1 \\
   & 2 \\
10 & 3 \\
\hline \\
};
\draw[->] (A-2-1) -- (A-2-2);
\draw[->] (A-3-1) -- (A-3-2);
\draw[->] (A-3-1) -- (A-4-2);
\draw[->] (A-5-1) -- (A-5-2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容