Tikzbild mit Untertitel

Tikzbild mit Untertitel

Ich möchte folgende Figur machen:

Bildbeschreibung hier eingeben

Den Code für eine etwas ähnliche Figur habe ich hier erhaltenTikzbild mit Unterabbildungen und Bildunterschriftschaffe es aber nicht, dies in das gewünschte Format zu ändern, wie oben gezeigt.

\documentclass{article}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}

\begin{document}
\begin{figure}
    \centering
    \subcaptionbox{subfigure a}[\textwidth]{
    \begin{tikzpicture}
        \def\length{6}   % Length of your arrow
        \def\height{0.5} % Height of your intersections
        \draw[->] (-\length,0) -- (\length,0);
        \node at (-2*\length/3,0) [yshift=-4,anchor=north]{X};
        \node at ( 0,0)           [yshift=-4,anchor=north]{Y};
        \node at ( 2*\length/3,0) [yshift=-4,anchor=north]{Z};
        \draw[-] (-\length/3,-\height/2) -- (-\length/3,\height/2);
        \draw[-] ( \length/3,-\height/2) -- ( \length/3,\height/2);
    \end{tikzpicture}
    }
    \subcaptionbox{subfigure b}[\textwidth]{
    \begin{tikzpicture}
        \def\length{6}   % Length of your arrow
        \def\height{0.5} % Height of your intersections
        \draw[->] (-\length,0) -- (\length,0);
        \node at (-2*\length/3,0) [yshift=-4,anchor=north]{X};
        \node at ( 0,0)           [yshift=-4,anchor=north]{Y};
        \node at ( 2*\length/3,0) [yshift=-4,anchor=north]{Z};
        \draw[-] (-\length/3,-\height/2) -- (-\length/3,\height/2);
        \draw[-] ( \length/3,-\height/2) -- ( \length/3,\height/2);
    \end{tikzpicture}
    }
\end{figure}
\end{document}

Antwort1

Es ist besser, dies zu verwenden , damit Sie den Abstand zwischen den von mir verwendeten Abbildungen subcaption block environmentvariieren können . Außerdem können Sie mit dieser Umgebung steuern, ob die Überschriften oder erscheinen . Dies wird festgelegt, wenn Sie die Überschrift vor oder nach der Zeichnung einfügen. Für die von Ihnen vorgeschlagene Zeichnung habe ich 3 Zeichnungsdefinitionen erstellt, um die Stile und Koordinaten nicht oft angeben zu müssen. Mit der ersten können Sie Markierungen an Positionen relativ zu einem Faktor zwischen und der angegebenen Länge platzieren , in diesem Fall der Breite der Textzeile . Auf diese Weise können Sie die Markierungen besser platzieren. Jede Markierung muss ein , ein und ein haben . Das wird für andere Zeichnungsdefinitionen verwendet, um keine absoluten Koordinaten zu platzieren.vertical\captionsetup{skip=2em}belowabove\Xdoms01\linewidhtnamecontentcolornames

Die zweite \Acotzeichnet eine Dimension zwischen 2 Markierungen, die mithilfe ihrer definiert sind names. Denken Sie daran, dass in benannte Koordinaten \xdomsvorhanden sind, nämlich und . Dort beginnen die Dimensionen. Der Inhalt geht dann in Textknoten in ( ) und den Pfad.2namename-upmiddlepos=0.5above

Letzteres wird verwendet, um den Mittelpunkt „x“ zu platzieren. Dabei wird die Tikz-Bibliothek calcmit der Methode verwendet $(#1)!0.5!(#2)$, der Mittelpunkt zwischen zwei Knoten wird lokalisiert, die auch als Namen eingegeben werden können. Anschließend wird ein Kreis gezeichnet und ein Textknoten definiert, aber anstatt den entsprechenden Text zu platzieren, verwende ich ein , das ich in einem bestimmten Abstand vom Knoten in einer bestimmten Ausrichtung node labelplatzieren kann .label distance=0.7em-90

Auf diese Weise können alle Fälle gezeichnet werden, einschließlich eines zusätzlichen als Spielplatz. Natürlich müssen Sie zuerst verwenden \xdomsund dann den Rest, da diese die Namen der Koordinaten verwenden, die in jeder eingegebenen Markierung erstellt werden.

ERGEBNIS:

Bildbeschreibung hier eingeben

MWE:

\documentclass{article}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc}

\def\Xdoms#1#2#3{%\Xdoms{length}{height}{Markers{position/name/content/color}}
    \draw(0,0)--++(#1,0);
    \foreach \position/\name/\content/\color in {#3}{
        \draw[draw=\color,thick]
        (#1*\position,0)++(0,#2/2)
            -- ++(0,-#2) node[below, minimum height=2em,inner sep=0]{\content};
        \coordinate (\name-up) at (#1*\position,#2*1.5);
        \coordinate (\name) at (#1*\position,0);
    }
}

\def\Acot#1#2#3#4{
    \draw[draw=#4,|-|](#1)--(#2)node [pos=0.5,above]{#3};
}
\def\Dotx#1#2#3#4{
    \fill[fill=#4]($(#1)!0.5!(#2)$) circle (3.5pt) node[below,label={[label distance=0.7em,#4]-90:#3}]{};
}


\begin{document}
    \setcounter{figure}{4}
    \begin{figure}
        \centering
        \caption {figure name}  
        \begin{subcaptionblock}{\textwidth}
            \begin{tikzpicture}
                \Xdoms{\linewidth}{0.5}{
                    0/Mk-0/0/black,%\position/\name/\content/\color
                    0.45/Mk-a/a/black,
                    0.65/Mk-b/b/black,
                    1/Mk-1/1/black%
                }
                \Acot{Mk-0-up}{Mk-a-up}{Text\_1}{red}
                \Acot{Mk-b-up}{Mk-1-up}{Text\_2}{blue}
                \Dotx{Mk-b}{Mk-1}{x}{black} 
            \end{tikzpicture}
            \captionsetup{skip=2em}
            \caption{Sub figure a}
        \end{subcaptionblock}
        \begin{subcaptionblock}{\textwidth}
            \begin{tikzpicture}
                \Xdoms{\linewidth}{0.5}{
                    0/Mk-0/0/black,%\position/\name/\content/\color
                    0.5/Mk-a/a/black,
                    1/Mk-1/1/black%
                }
                \Acot{Mk-0-up}{Mk-a-up}{Text\_1}{red}
                \Acot{Mk-a-up}{Mk-1-up}{Text\_2}{blue}
                \Dotx{Mk-a}{Mk-1}{x}{black} 
            \end{tikzpicture}
            \captionsetup{skip=2em}
            \caption{Sub figure b}
        \end{subcaptionblock}
        \begin{subcaptionblock}{\textwidth}
            \begin{tikzpicture}
                \Xdoms{\linewidth}{0.5}{
                    0/Mk-0/0/black,%\position/\name/\content/\color
                    1/Mk-1/1/black%
                }
                \Acot{Mk-0-up}{Mk-1-up}{Text\_2}{blue}
                \Dotx{Mk-0}{Mk-1}{x}{black} 
            \end{tikzpicture}
            \captionsetup{skip=2em}
            \caption{Sub figure c}
        \end{subcaptionblock}
        \begin{subcaptionblock}{\textwidth}
            \begin{tikzpicture}
                \Xdoms{\linewidth}{0.5}{
                    0/AA/A/red,%\position/\name/\content/\color
                    0.1/BB/B/black!20!red,
                    0.3/CC/C/black!30!red,
                    0.4/DD/D/black!40!red,
                    0.5/EE/E/black!50!red,
                    0.75/FF/F/black!60!red,
                    1/GG/G/black!70!red%
                }
                \Acot{AA-up}{CC-up}{A TO C}{blue}
                \Acot{DD-up}{FF-up}{D TO F}{blue!50!red}
                \Dotx{AA}{BB}{x}{green!50!blue}
                \Dotx{EE}{FF}{y}{green!50!cyan} 
            \end{tikzpicture}
            \captionsetup{skip=2em}
            \caption{Sub figure d playground}
        \end{subcaptionblock}
    \end{figure}
\end{document}

Antwort2

Das ist, was ich aus Ihrem Code verstehe.

Ergebnis

Ich konnte nicht herausfinden, wo das Problem mit den Untertiteln liegt. Liegt es an der tikzAbbildung selbst? Möchten Sie genau dieselbe Abbildung erhalten?

Bitte erläutern Sie Ihre Frage.

verwandte Informationen