我如何标记子图网格的轴?

我如何标记子图网格的轴?

是否可以在乳胶图中制作一个 3×3 的网格图,然后只标记列和行,而不需要为每行添加标题?例如,我希望将列标记为 A、B 和 C,将行标记为 1、2 和 3。然后我就可以将正方形 (2, B) 引用为中间正方形。

我正在使用一个包含 9 个子图环境的图形环境

\begin{figure*}[t]
    \begin{subfigure}{0.3\textwidth}
        \includegraphics[width=\linewidth]{/path/to/img1}
    \end{subfigure}%
    \begin{subfigure}{0.3\textwidth}
        \includegraphics[width=\linewidth]{/path/to/img2}
    \end{subfigure}%
    \begin{subfigure}{0.3\textwidth}
        \includegraphics[width=\linewidth]{/path/to/img3}
    \end{subfigure}

    \begin{subfigure}{0.3\textwidth}
    \includegraphics[width=\linewidth]{/path/to/img4}
\end{subfigure}%
\begin{subfigure}{0.3\textwidth}
    \includegraphics[width=\linewidth]{/path/to/img5}
\end{subfigure}%
\begin{subfigure}{0.3\textwidth}
    \includegraphics[width=\linewidth]{/path/to/img6}
\end{subfigure}

    \begin{subfigure}{0.3\textwidth}
    \includegraphics[width=\linewidth]{/path/to/img7}
    \caption{Smad7 reproduced}
\end{subfigure}%
\begin{subfigure}{0.3\textwidth}
    \includegraphics[width=\linewidth]{/path/to/img8}
\end{subfigure}%
\begin{subfigure}{0.3\textwidth}
    \includegraphics[width=\linewidth]{/path/to/img9}
\end{subfigure}


    \caption{}
\end{figure*}

答案1

您可以使用 tikz 包来创建一个或多个foreach循环以及所需的计算。

foreach 命令

\foreach是启动循环的命令。它的语法是\foreach \x in {list} {commands},\x 可以是任何我们想要的变量名(如 \row 或 \col),列表可以是用逗号分隔的完整列表(如{1, item 2, third item, 4}),或者如果它只是数字,可以用点来完成(如 {1,2,...,9} 或 {3,6,...,15})。commands可以是您想要重复的许多命令(它就像 python 的 for 循环)。注意:foreach 循环在环境中运行,并且可以使用的命令存在一些限制,但目前这是某种高级信息。

pgfmathsetmacro 命令

\pgfmathsetmacro是包含在所加载包中的命令,tikz用于为变量提供数值(浮点数或整数)。如果您想要整数结果,则必须将操作放在int()函数内部。我使用此命令来计算变量\totalCount(即数字的计数器 - 此处从 1 到 9 -)并确定是否要在当前图像后开始新行(\newRow对于这些 \totelCount 值,变量为 0.0,可以精确除以 3 - 请参阅 python modulo ...我认为 pgfmathsetmacro 也有一个模数,但我没有使用它-)。

附加信息:

要在 python 中检查某些内容,您可以使用条件语句,例如if... 在 LaTeX 中使用相同的语句,但是对于整数,它是\ifnum...\else...\fi,对于浮点数,我们可以使用\ifdim...\else...\fi。(dim来自维度,因为对于 LaTeX 浮点数大多数时候用作长度(因此在下面的命令中添加了一个 pt \ifdim))

最后一部分是\xdef扩展其结果后定义一个变量并使其成为全局变量的命令(这是一个大故事...请搜索“latex def、edef、gdef 和 xdef”等)

代码如下:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{subcaption}
\usepackage{hyperref}
\usepackage{nameref}
\usepackage{cleveref}
\usepackage{graphicx}
\usepackage{tikz}
%opening
\title{}
\author{Kostis Leledakis}
\newcounter{myfigcol}
\newcounter{myfigrow}
\def\myspace{\hspace{5pt}}


\begin{document}

\begin{figure*}[t]
\foreach \row in {1,2,3} {%
\foreach \col in {1,2,3} {%
\setcounter{myfigcol}{\col}%
\setcounter{myfigrow}{\row}%
\pgfmathsetmacro\totalCount{int(\col+(\row-1)*3)}%
\xdef\totalC{\totalCount}%
\pgfmathsetmacro\newRow{\col/3-int(\col/3)}%
\xdef\rowC{\alph{myfigcol}}%
\xdef\colC{\arabic{myfigrow}}%
\renewcommand\thesubfigure{\rowC-\colC}%
\begin{subfigure}{0.3\textwidth}%
        \includegraphics[width=\linewidth]{example-image-\rowC}%
        \caption{\centering Smad\totalC{} reproduced or image: (\rowC-\colC) etc}\label{fig:First\totalC}%
\end{subfigure}\ifdim\newRow pt = 0pt\space\else\myspace\fi%  
}
}

    \caption{My First figure}\label{fig:First}
\end{figure*}

In the figure \ref{fig:First3} included inside \nameref{fig:First}   as :\nameref{fig:First3} or else in \Cref{fig:First3}

\end{document}

输出:

在此处输入图片描述

我使用:example-image-\rowC作为我的图像,但你可以使用

/path/to/image\totalC

如需更多或更多具体信息,请随时询问。

相关内容