Добавьте подписи к двум графикам, расположенным рядом

Добавьте подписи к двум графикам, расположенным рядом

Как добавить подпись под каждым графиком, сохранив при этом их расположение рядом друг с другом?

\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{positioning}
\tikzset{main node/.style={circle,fill=black,draw,minimum size=.2cm,inner sep=0pt},}
    \begin{center}
        \begin{tikzpicture}
            \node[main node, label=above:{$a$},] (1) {};
            \node[main node, label=right:{$b$}] (2) [below right = 1cm and 1cm of 1] {};
            \node[main node, label=left:{$c$}] (3) [below left = 1cm and 1cm of 1] {};

            \path[draw, thick]
            (1) edge node {} (2)
            (2) edge node {} (3)
            (1) edge node {} (3);
        \end{tikzpicture} \hspace{2cm}
        \begin{tikzpicture}
            \node[main node, label=left:{$a$},] (1) {};
            \node[main node, label=left:{$b$}] (2) [below = 1cm of 1] {};
            \node[main node, label=right:{$c$}] (3) [right = 1cm of 1] {};
            \node[main node, label=right:{$d$}] (4) [below = 1 cm of 3] {};

            \path[draw, thick]
            (1) edge node {} (2)
            (2) edge node {} (4)
            (3) edge node {} (4)
            (1) edge node {} (3);
        \end{tikzpicture}
    \end{center}
\end{document}

введите описание изображения здесь

решение1

Есть много способов добиться этого. Для полного отсутствия подписей вы можете использовать ответ М. С., но не используя окружение figure, используя minipageвместо subfigure, и просто написав текст непосредственно после \end{tikzpicture}, нет \caption. Однако добавьте пустую строку (разрыв абзаца) перед текстом.

Здесь я показываю совершенно другой подход, с одним tikzpicture, а вторая диаграмма перемещена вправо с помощью \begin{scope}[xshift=5cm, local bounding box=b]. local bounding boxСоздает узел, который охватывает содержимое scope, которое я использую для позиционирования \nodeс текстом.

Еще одна деталь: вообще не используйте \usetikzlibrary{..}after \begin{document}. Здесь, кажется, проблем не возникает, но я видел случаи, когда это не работало, поэтому лучше загружать библиотеки в преамбуле.

введите описание изображения здесь

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\tikzset{main node/.style={circle,fill=black,draw,minimum size=.2cm,inner sep=0pt},}
    \begin{center}
        \begin{tikzpicture}[
            captiontext/.style={below=3mm, text width=5cm}
            ]
            \node[main node, label=above:{$a$}] (1) {};
            \node[main node, label=right:{$b$}, below right = 1cm and 1cm of 1] (2)  {};
            \node[main node, label=left:{$c$}, below left = 1cm and 1cm of 1] (3) {};

            \draw [thick] (1) -- (2) -- (3) -- (1);
            
            \node [captiontext] at (current bounding box.south) {Text text and more text ad infinitum and so on.};


        \begin{scope}[xshift=5cm, local bounding box=b]
            \node[main node, label=left:{$a$},] (1) {};
            \node[main node, label=left:{$b$},below = 1cm of 1] (2)  {};
            \node[main node, label=right:{$c$}, right = 1cm of 1] (3)  {};
            \node[main node, label=right:{$d$}, below = 1 cm of 3] (4)  {};

            \draw [thick] (1) -- (2) -- (4) -- (3) -- (1);
            \end{scope}
            
            \node [captiontext] at (b.south) {More text text and more text ad infinitum and so on going on for a bit.};
        \end{tikzpicture}
    \end{center}
\end{document}

решение2

Вы можете использовать две мини-страницы рядом. Проблема, которую нужно решить, заключается в том, чтобы сделать так, чтобы подписи отображались на одном уровне, даже если изображения и подписи имеют разный вертикальный размер.

Мое решение — встроить изображения во вложенные мини-страницы с выравниванием по нижнему краю. Внешние мини-страницы вместо этого имеют выравнивание по верхнему краю, что фактически означает, что их опорными точками будут точки верхнего поля, то есть низ изображения. Это разместит подписи в той же вертикальной позиции на странице.

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

\tikzset{
  main node/.style={
    circle,
    fill=black,
    draw,
    minimum size=.2cm,
    inner sep=0pt
  },
}

\begin{document}

\begin{figure}

\begin{minipage}[t]{0.45\textwidth}
% left column
  \begin{minipage}[b]{\textwidth}
  \centering
  \begin{tikzpicture}
    \node[main node, label=above:{$a$},] (1) {};
    \node[main node, label=right:{$b$}] (2) [below right = 1cm and 1cm of 1] {};
    \node[main node, label=left:{$c$}] (3) [below left = 1cm and 1cm of 1] {};

    \path[draw, thick]
      (1) edge node {} (2)
      (2) edge node {} (3)
      (1) edge node {} (3);
    \end{tikzpicture}
  \end{minipage}

  \caption{This is the figure on the left, with a not so lengthy caption}
\end{minipage}\hfill % <--- don't forget
\begin{minipage}[t]{0.45\textwidth}
% right column
  \begin{minipage}[b]{\textwidth}
  \centering
  \begin{tikzpicture}
    \node[main node, label=left:{$a$},] (1) {};
    \node[main node, label=left:{$b$}] (2) [below = 1cm of 1] {};
    \node[main node, label=right:{$c$}] (3) [right = 1cm of 1] {};
    \node[main node, label=right:{$d$}] (4) [below = 1 cm of 3] {};

    \path[draw, thick]
      (1) edge node {} (2)
      (2) edge node {} (4)
      (3) edge node {} (4)
      (1) edge node {} (3);
  \end{tikzpicture}
  \end{minipage}

  \caption{This is the figure on the right, with a long caption,
    that should form at least three lines; we add text so that
    it's long enough}
\end{minipage}

\end{figure}

\end{document}

введите описание изображения здесь

решение3

Надеюсь, что указанный ниже код послужит вашей цели. По сути, это одна фигура с двумя подзаголовками. Если вам нужны две разные фигуры с подписями, пожалуйста, дайте мне знать.

На основе вашего недавнего комментария. Вы можете прокомментировать основную часть подписи рисунка.

\documentclass{article}
\usepackage{tikz,subcaption}
\begin{document}
\usetikzlibrary{positioning}
\tikzset{main node/.style={circle,fill=black,draw,minimum size=.2cm,inner sep=0pt},}
\begin{figure}
\centering
\begin{subfigure}[b]{0.4\linewidth}
\centering
\begin{tikzpicture}
        \node[main node, label=above:{$a$},] (1) {};
        \node[main node, label=right:{$b$}] (2) [below right = 1cm and 1cm of 1] {};
        \node[main node, label=left:{$c$}] (3) [below left = 1cm and 1cm of 1] {};
        \path[draw, thick]
        (1) edge node {} (2)
        (2) edge node {} (3)
        (1) edge node {} (3);
    \end{tikzpicture} 
    \caption{caption1} \label{fig:M1} 
    \end{subfigure}
    \begin{subfigure}[b]{0.4\linewidth}
        \centering
   \begin{tikzpicture}
        \node[main node, label=left:{$a$},] (1) {};
        \node[main node, label=left:{$b$}] (2) [below = 1cm of 1] {};
        \node[main node, label=right:{$c$}] (3) [right = 1cm of 1] {};
        \node[main node, label=right:{$d$}] (4) [below = 1 cm of 3] {};
        \path[draw, thick]
        (1) edge node {} (2)
        (2) edge node {} (4)
        (3) edge node {} (4)
        (1) edge node {} (3);
    \end{tikzpicture}  
\caption{caption2} \label{fig:M2}  
\end{subfigure}
\caption{main caption}  
\end{figure}   
\end{document}

Выход:

введите описание изображения здесь

Связанный контент