Tikzpictures 并排放置在同一轴上

Tikzpictures 并排放置在同一轴上

我想创建一个图形,其中三个 tikzpicture 并排对齐,其中每个图应具有相同的轴对齐。我尝试了以下方法

\documentclass{scrartcl}
\usepackage{tikz-cd} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{figure}
\centering
\begin{minipage}{0.15\textwidth}
\begin{tikzpicture}
\begin{axis}[ymin=-1/3,ymax=1.3,
 xmin=-1/3,xmax=1,
 axis line style={draw=none},
 ticks=none,xlabel=$K_1$
]
\pgfmathsetmacro{\rr}{0.02}
\pgfmathsetmacro{\oo}{1}    
\draw[black,fill=red,opacity=\oo] (0,0) circle (\rr) node[below] {$v_1$};
\end{axis}
\end{tikzpicture}
\end{minipage}
\hspace{0.3cm}
\begin{minipage}{0.15\textwidth}
\begin{tikzpicture}
\begin{axis}[ymin=-1/3,ymax=1.3,
xmin=-1/3,xmax=1,
axis line style={draw=none},
ticks=none, xlabel=$K_2$
]
\pgfmathsetmacro{\rr}{0.02}    
\pgfmathsetmacro{\oo}{1}    
\draw[black,fill=red,opacity=\oo] (0,0) circle (\rr) node[below] {$v_1$};
\draw[black,fill=red,opacity=\oo] (3/4,3/4) circle (\rr) node[below] 
{$v_2$};
\end{axis}
\end{tikzpicture}
\end{minipage}
\hspace{0.3cm}
\begin{minipage}{0.15\textwidth}
\begin{tikzpicture}
\begin{axis}[ymin=-1/3,ymax=1.3,
xmin=-1/3,xmax=1,
axis line style={draw=none},
ticks=none,xlabel=$K_3$
]
\pgfmathsetmacro{\rr}{0.02}
\pgfmathsetmacro{\oo}{1}
\draw[black,fill=red,opacity=\oo] (0,0) circle (\rr) node[below] {$v_1$};
\draw[black,fill=red,opacity=\oo] (3/4,3/4) circle (\rr) node[below] 
{$v_2$};
\draw[black,fill=red,opacity=\oo] (1/2,1) circle (\rr) node[below] {$v_3$};
\end{axis}
\end{tikzpicture}
\end{minipage}
\caption{test}
\label{fig: test}
\end{figure}
\end{document}

这将产生以下输出:

正如您所见,对齐根本不起作用。它以某种方式将所有内容移到右侧,并且 tikzpcitures 本身也重叠。

有人可以向我解释一下如何以正确的方式做到这一点。

答案1

我不确定您希望输出是什么样子,所以我不知道下面的输出是否是您想要的,但一种可能性是只使用一个minipage(甚至不使用小页面)并将所有内容放在一个tikzpicture环境中,将不同的图表放在不同的scope环境中。这样做会产生:

在此处输入图片描述

正如我所说,我不知道这是否是您想要的输出:)

以下是代码:

\documentclass{article}
\usepackage{tikz-cd}% not needed?
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}

\pgfmathsetmacro{\rr}{0.02}
\pgfmathsetmacro{\oo}{1}

\pgfplotsset{
  myaxis/.style={
    ymin=-1/3,
    ymax=1.3,
    xmin=-1/3,
    xmax=1,
    axis line style={draw=none},
    ticks=none,
  },
}
\tikzset{
  bline/.style= {
    black,
    fill=red,
    opacity=\oo
  }
}

\begin{figure}
\centering
\begin{minipage}{\textwidth}
  \begin{tikzpicture}

    \begin{scope}[xshift=0\textwidth]%  not needed, only for consistency
      \begin{axis}[myaxis, xlabel=$K_1$]
          \draw[bline] (0,0) circle (\rr) node[below] {$v_1$};
      \end{axis}
    \end{scope}

    \begin{scope}[xshift=0.3\textwidth]
      \begin{axis}[myaxis, xlabel=$K_2$]
        \draw[bline] (0,0) circle (\rr) node[below] {$v_1$};
        \draw[bline] (3/4,3/4) circle (\rr) node[below] {$v_2$};
      \end{axis}
    \end{scope}

    \begin{scope}[xshift=0.6\textwidth]
      \begin{axis}[myaxis, xlabel=$K_3$]
        \draw[bline] (0,0) circle (\rr) node[below] {$v_1$};
        \draw[bline] (3/4,3/4) circle (\rr) node[below] {$v_2$};
        \draw[bline] (1/2,1) circle (\rr) node[below] {$v_3$};
      \end{axis}
    \end{scope}
  \end{tikzpicture}
\end{minipage}
\caption{test}
\label{fig: test}
\end{figure}
\end{document}

我稍微整理了一下你的代码。这有助于定义你分别使用的tikz样式pgfplots,然后在需要时插入它们。这使得代码更具可读性,更重要的是,更容易调整和更改,因为你只需要在一个地方进行这些操作。

相关内容