Me gustaría hacer la siguiente figura:
Recibí el código para una figura algo similar aquí.Tikzpicture con subfiguras y título.pero no logre cambiar esto al formato deseado como se muestra arriba.
\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}
Respuesta1
Es mejor usar el subcaption block environment
que te permitirá variar la vertical
separación entre figuras que uso \captionsetup{skip=2em}
, entonces también usando este entorno puedes controlar si los pies de foto van below
o above
, esto se define si pones el pie de foto antes o después del dibujo; En el caso del dibujo que propones, he creado 3 definiciones de dibujo para no tener que especificar muchas veces los estilos y coordenadas. La primera \Xdoms
, te permite colocar marcas en posiciones relativas a un factor entre 0
y 1
del largo indicado, en este caso el ancho de la línea de texto \linewidht
, de esa manera podrás colocar mejor las marcas, cada marca debe tener un name
, un content
y un color
, El names
se utilizará para otras definiciones de dibujo para no estar colocando coordenadas absolutas.
El segundo \Acot
, dibuja una dimensión entre 2 marcas definidas usando sus names
, recuerda que ahí \xdoms
hay unas 2
coordenadas nombradas que son name
y name-up
, que es donde comenzarán las dimensiones, luego el contenido va en nodos de texto en middle
( pos=0.5
) y above
la ruta.
El último se usa para colocar el punto medio "x" el cual usa la biblioteca tikz calc
con el método $(#1)!0.5!(#2)$
, ubica el punto medio entre 2 nodos que se pueden ingresar como nombres también, luego se dibuja un círculo y se define un nodo de texto pero en lugar de colocar el texto correspondiente lo uso y node label
lo puedo colocar a cierta distancia label distance=0.7em
del nodo en una orientación específica -90
.
Al hacer esto se pueden dibujar todos los casos, incluso uno adicional como patio de juegos, obviamente debes usar primero \xdoms
, y luego el resto ya que usan los nombres de las coordenadas que se crean en cada marca ingresada.
RESULTADO:
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}