如何在同一张图中表示用 TikZ 创建的两个图形?
图的源代码如下:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetheme{Frankfurt}
\begin{document}
\begin{frame}{TITLE}
\begin{figure}[H]
\begin{center}
\begin{tikzpicture} [sibling distance=1.5cm]
% \node [size=0.3cm](topnode) at (0,5) {\{1,2,3\}}
\node (topnode) at (0,5) {\{1,2,3\}}
child { node[size=0.3cm] {\{1,2\}\{3\}}}
child { node[size=0.3cm] {\{1,3\}\{2\}}}
child { node[size=0.3cm] {\{1\}\{2,3\}}}
;
\node [size=0.3cm](topnode) {\{1\}\{2\}\{3\}}
% \node[minimum width=3cm] at (0,5) {\{\{1,2,3\}\}}
;
\foreach \x in {-3}{
\draw (topnode-1) -- (bottomnode-\x);
\draw (topnode-3) -- (bottomnode-\x);
\draw (topnode-2) -- (bottomnode-\x);
}
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
像那样
答案1
\begin{tikzpicture} ... \end{tikzpicture}
这是一个简单的观察,但你可以在有用的@ClaudioFiandrino 的答案中添加将两个图表插入到相同环境中以将它们分开的可能性\begin{scope}[shift={(5,0)}] ... \end{scope}
:
\documentclass{beamer}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetheme{Frankfurt}
\begin{document}
\begin{frame}{TITLE}
\begin{center}
\begin{tikzpicture} [sibling distance=1.5cm]
\node (topnode) at (0,5) {1}
child { node[minimum size=0.3cm] {2}}
child { node[minimum size=0.3cm] {3}}
child { node[minimum size=0.3cm] {4}}
;
\node [minimum size=0.3cm](bottomnode) {5};
\draw (topnode-1) -- (bottomnode);
\draw (topnode-3) -- (bottomnode);
\draw (topnode-2) -- (bottomnode);
\begin{scope}[shift={(5,0)}]
\node (topnode) at (0,5) {1}
child { node[minimum size=0.3cm] {2}}
child { node[minimum size=0.3cm] {3}}
child { node[minimum size=0.3cm] {4}}
;
\node [minimum size=0.3cm](bottomnode) {5};
\draw (topnode-1) -- (bottomnode);
\draw (topnode-3) -- (bottomnode);
\draw (topnode-2) -- (bottomnode);
\end{scope}
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
按照这种方式,您可以处理一个图相对于另一个图的相对位置,而不仅仅是 x 轴方向。(本例中的图像与 Claudio 之前显示的图像相同。)
答案2
我尝试猜测请求并重现上传的图片。
对于该示例,不需要从以下代码中获取的确切语法在 TikZ 中绘制许多节点具有相同子节点的树和使用 Latex 的树,所以在我的回答中我简化了它。
基本上,如果问题是:“如何将这两个图并排放置”,您可以采用两种方法:
- 将两张图片并排插入(可能用 将
\hspace
它们分开); - 使用
columns
环境。
正确的方法取决于您的需要:如果您只需要显示两张图片,则可以使用第二张图片,而如果您还需要插入一些文本,也许第一种方法更好。
方法 1
代码:
\documentclass{beamer}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetheme{Frankfurt}
\begin{document}
\begin{frame}{TITLE}
\begin{center}
\begin{tikzpicture} [sibling distance=1.5cm]
\node (topnode) at (0,5) {1}
child { node[minimum size=0.3cm] {2}}
child { node[minimum size=0.3cm] {3}}
child { node[minimum size=0.3cm] {4}}
;
\node [minimum size=0.3cm](bottomnode) {5};
\draw (topnode-1) -- (bottomnode);
\draw (topnode-3) -- (bottomnode);
\draw (topnode-2) -- (bottomnode);
\end{tikzpicture}
\hspace{1cm}
\begin{tikzpicture} [sibling distance=1.5cm]
\node (topnode) at (0,5) {1}
child { node[minimum size=0.3cm] {2}}
child { node[minimum size=0.3cm] {3}}
child { node[minimum size=0.3cm] {4}}
;
\node [minimum size=0.3cm](bottomnode) {5};
\draw (topnode-1) -- (bottomnode);
\draw (topnode-3) -- (bottomnode);
\draw (topnode-2) -- (bottomnode);
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
结果:
方法 2
代码:
\documentclass{beamer}
\usepackage{lmodern}
\usepackage{tikz}
\usetikzlibrary{trees}
\usetheme{Frankfurt}
\begin{document}
\begin{frame}{TITLE}
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\centering
\begin{tikzpicture} [sibling distance=1.5cm]
\node (topnode) at (0,5) {1}
child { node[minimum size=0.3cm] {2}}
child { node[minimum size=0.3cm] {3}}
child { node[minimum size=0.3cm] {4}}
;
\node [minimum size=0.3cm](bottomnode) {5};
\draw (topnode-1) -- (bottomnode);
\draw (topnode-3) -- (bottomnode);
\draw (topnode-2) -- (bottomnode);
\end{tikzpicture}
\end{column}
\begin{column}{0.5\textwidth}
\centering
\begin{tikzpicture} [sibling distance=1.5cm]
\node (topnode) at (0,5) {1}
child { node[minimum size=0.3cm] {2}}
child { node[minimum size=0.3cm] {3}}
child { node[minimum size=0.3cm] {4}}
;
\node [minimum size=0.3cm](bottomnode) {5};
\draw (topnode-1) -- (bottomnode);
\draw (topnode-3) -- (bottomnode);
\draw (topnode-2) -- (bottomnode);
\end{tikzpicture}
\end{column}
\end{columns}
\end{frame}
\end{document}
结果: