帶有副標題的 Tikz 圖片

帶有副標題的 Tikz 圖片

我想做下圖:

在此輸入影像描述

我在這裡收到了一個有點相似的數字的代碼帶有子圖和標題的 Tikzpicture但無法將其變更為如上所示的所需格式。

\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}

答案1

最好使用 ,subcaption block environment它允許您改變vertical我使用的圖形之間的間距\captionsetup{skip=2em},然後也使用此環境,您可以控制標題是否去belowabove,如果您將標題放在繪圖之前或之後,則這是定義的;對於您建議的繪圖,我建立了 3 個繪圖定義,以便不必多次指定樣式和座標。第一個\Xdoms,讓您可以將標記放置在相對於指定長度(在本例中為文字行的寬度)之間的因子的位置01以便\linewidht您可以更好地放置標記,每個標記必須有 a name、 acontent和a color,將names用於其他繪圖定義,以免放置絕對座標。

第二個\Acot,在使用它們定義的兩個標記之間繪製尺寸names,請記住,\xdoms其中的2命名座標是namename-up,這是尺寸開始的位置,然後內容進入middle( pos=0.5) 和above路徑中的文字節點。

最後一個用於放置中點“x”,它使用 tikz 庫的calc方法$(#1)!0.5!(#2)$,定位兩個也可以作為名稱輸入的節點之間的中點,然後繪製一個圓圈並定義一個文字節點,但不放置我使用的對應文字node label可以放置在距label distance=0.7em節點一定距離的特定方向-90的特定方向。

透過這樣做,可以繪製所有案例,包括作為遊樂場的額外案例,顯然您必須先使用\xdoms,然後是其餘的,因為它們使用在輸入的每個標記中創建的座標名稱。

結果:

在此輸入影像描述

微量元素:

\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}

答案2

這是我從你的程式碼中得到的。

結果

我不明白與字幕相關的問題是什麼。是不是與tikz插圖本身有關嗎?你想得到完全相同的數字嗎?

請澄清你的問題。

相關內容