Ich möchte folgende Figur machen:
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 environment
variieren 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}
below
above
\Xdoms
0
1
\linewidht
name
content
color
names
Die zweite \Acot
zeichnet eine Dimension zwischen 2 Markierungen, die mithilfe ihrer definiert sind names
. Denken Sie daran, dass in benannte Koordinaten \xdoms
vorhanden sind, nämlich und . Dort beginnen die Dimensionen. Der Inhalt geht dann in Textknoten in ( ) und den Pfad.2
name
name-up
middle
pos=0.5
above
Letzteres wird verwendet, um den Mittelpunkt „x“ zu platzieren. Dabei wird die Tikz-Bibliothek calc
mit 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 label
platzieren 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 \xdoms
und dann den Rest, da diese die Namen der Koordinaten verwenden, die in jeder eingegebenen Markierung erstellt werden.
ERGEBNIS:
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}