Tikzpicture изменяет среду подрисунка

Tikzpicture изменяет среду подрисунка

Мне нужна ось, нарисованная с помощью TiкZ в углу сетки изображения, чтобы четко увидеть увеличение переменных. Нижеприведенный MWE приводит к рисунку 1. Я попробовал поместить a \linebreakмежду \end{tikzpicture}и, \foreach \aчто приводит к рисунку 2. В идеале я хочу получить что-то вроде рисунка 3, но без белого фона на tikzpictureоси ie очень близко к первой цифре.

\documentclass{article}
\usepackage[demo]{graphics}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{subcaption}

\begin{document}
\begin{figure}[!htb]
    \centering
    \begin{tikzpicture}
        \draw [->] (0,0) -- (0.5,0) node[right]{\(\sigma_{\theta}\)};
        \draw [->] (0,0) -- (0,-0.5) node[below]{\(\sigma_{\phi}\)};
    \end{tikzpicture}
    \foreach \a in {1,...,2} {
        \foreach \b in {1,...,5} {
            \begin{subfigure}{.185\textwidth}
                \includegraphics[width=\textwidth]{example-image-duck}
                \caption{\((\a,\b)\)}
            \end{subfigure}
        }
        \linebreak
    }
\end{figure}
\end{document}

Рисунок 1

Проблема

фигура 2

Текущий

Рисунок 3

Решение

решение1

Дайте мне знать, если это то, что вы ищете :)

Вы можете настроить \vspace{}и , \hspace{}чтобы переместить оси в нужное вам место.

\documentclass{article}
\usepackage[demo]{graphics}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{subcaption}

\begin{document}
\begin{figure}[!htb]
    \hspace{-1cm}   %shifts the tikzpicture to the left 1cm
    \begin{tikzpicture}
        \draw [->] (0,0) -- (0.5,0) node[right]{\(\sigma_{\theta}\)};
        \draw [->] (0,0) -- (0,-0.5) node[below]{\(\sigma_{\phi}\)};
    \end{tikzpicture}
    \vspace{-0.5cm}  %pulls the following pictures up half a cm
    \begin{center}   % Only centers the pictures, not the axes
        \foreach \a in {1,...,2} {
            \foreach \b in {1,...,5} {
                \begin{subfigure}{.185\textwidth}
                    \includegraphics[width=\textwidth]{example-image-duck}
                    \caption{\((\a,\b)\)}
                \end{subfigure}
            }
            \linebreak
        }
    \end{center}    
\end{figure}
\end{document}

производит:

введите описание изображения здесь

решение2

\documentclass{article}
\usepackage{graphics}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{subcaption}
\usepackage{stackengine}
\begin{document}
\begin{figure}[!htb]
    \centering
\savestack\myaxes{\raisebox{-23pt}{%
    \begin{tikzpicture}
        \draw [->] (0,0) -- (0.5,0) node[right]{\(\sigma_{\theta}\)};
        \draw [->] (0,0) -- (0,-0.5) node[below]{\(\sigma_{\phi}\)};
    \end{tikzpicture}
}}
    \foreach \a in {1,...,2} {
        \foreach \b in {1,...,5} {
            \begin{subfigure}{.185\textwidth}
               \ifnum\a=1\relax
                 \ifnum\b=1\relax
                   \stackinset{l}{-15pt}{t}{}{\smash{\myaxes}}{%
                     \includegraphics[width=\textwidth]{example-image-duck}%
                   }
                 \else
                   \includegraphics[width=\textwidth]{example-image-duck}
                 \fi
               \else
                 \includegraphics[width=\textwidth]{example-image-duck}
               \fi
                \caption{\((\a,\b)\)}
            \end{subfigure}
        }
        \linebreak
    }
\end{figure}
\end{document}

введите описание изображения здесь

Следующая альтернатива имеет меньше кодирования, но требует больше выполнения, так как она выполняет a \stackinsetдля каждой цифры. Однако вставка обнуляется после первого использования:

\documentclass{article}
\usepackage{graphics}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{subcaption}
\usepackage{stackengine}
\begin{document}
\begin{figure}[!htb]
    \centering
\savestack\myaxes{\raisebox{-23pt}{%
    \begin{tikzpicture}
        \draw [->] (0,0) -- (0.5,0) node[right]{\(\sigma_{\theta}\)};
        \draw [->] (0,0) -- (0,-0.5) node[below]{\(\sigma_{\phi}\)};
    \end{tikzpicture}
}}
    \foreach \a in {1,...,2} {
        \foreach \b in {1,...,5} {
            \begin{subfigure}{.185\textwidth}
               \stackinset{l}{-15pt}{t}{}{\smash{\myaxes}}{%
                 \includegraphics[width=\textwidth]{example-image-duck}%
               }
               \global\let\myaxes\relax
               \caption{\((\a,\b)\)}
            \end{subfigure}
        }
        \linebreak
    }
\end{figure}
\end{document}

Эта третья альтернатива обнуляет значение \stackinsetпосле первого использования и восстанавливает его после цифры. Таким образом, она более эффективна в исполнении, чем предыдущая альтернатива, и все еще требует меньше кодирования, чем изначально предоставленное решение.

\documentclass{article}
\usepackage{graphics}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{subcaption}
\usepackage{stackengine}
\let\svstackinset\stackinset
\newcommand\zerostackinset{\gdef\stackinset##1##2##3##4##5##6{##6}}
\begin{document}
\begin{figure}[!htb]
    \centering
\savestack\myaxes{\raisebox{-23pt}{%
    \begin{tikzpicture}
        \draw [->] (0,0) -- (0.5,0) node[right]{\(\sigma_{\theta}\)};
        \draw [->] (0,0) -- (0,-0.5) node[below]{\(\sigma_{\phi}\)};
    \end{tikzpicture}
}}
    \foreach \a in {1,...,2} {
        \foreach \b in {1,...,5} {
            \begin{subfigure}{.185\textwidth}
               \stackinset{l}{-15pt}{t}{}{\smash{\myaxes}}{%
                 \includegraphics[width=\textwidth]{example-image-duck}%
               }
               \zerostackinset
               \caption{\((\a,\b)\)}
            \end{subfigure}
        }
        \linebreak
    }
\end{figure}
\let\stackinset\svstackinset
\end{document}

Связанный контент