von gast » Mi 20. Jan 2021, 18:21
Zunächst sei darauf hingewiesen, dass dein Code nicht funktioniert, weil er falsch markiert wurde. Der MWE-Knopf in der Toolbar dient lediglich dazu einen Link auf die Minimalbeispiel-Anleitung zu setzen. Für den Code eine Minimalbeispiels, ist hingegen der </>-Knopf bzw. ein Code-Tag zu verwenden.
Da \definecolor lokale arbeitet (was du ja auch ausdrücklich möchtest), kann das nicht funktionieren. Lokale Definitionen enden am Ende der aktuellen Gruppe. Jede Umgebung stellt auch eine Gruppe dar. Damit endet eine Farbdeklaration mit \definecolor, die innerhalb einer subfigure-Umgebung vorgenommen wird, immer am zugehörigen \end{subfigure}. Die Farbdeklaration muss also zwingend min. außerhalb der subfigure-Umgebung in die figure-Umgebung verschoben werden:
\documentclass{article}
\usepackage[format=plain]{caption}
\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}% Siehe unbedingt: https://texwelt.de/fragen/19163
\begin{document}
\begin{figure}
\definecolor{mycolor1}{rgb}{1,0,0}%
\definecolor{mycolor2}{rgb}{0.5,1,1}%
\begin{subfigure}[]{\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot+[mark=square*,mycolor1,samples=15]{3*x+2.5*rand};\label{pgfplots:label1}
\end{axis}
\end{tikzpicture}
\caption{Caption A. \ref{pgfplots:label1} mark.}
\end{subfigure}\vfill
\begin{subfigure}[]{\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot+[mark=square*,mycolor2,samples=15]{3*x+2.5*rand};\label{pgfplots:label2}
\end{axis}
\end{tikzpicture}
\caption{Caption B. \ref{pgfplots:label2} mark.}
\end{subfigure}
\caption{Caption total: Mark A \ref{pgfplots:label1}, Mark B \ref{pgfplots:label2}.}
\end{figure}
\end{document}
Die Pakete, die ich weggelassen habe, werden alle von pgfplots geladen.
Zunächst sei darauf hingewiesen, dass dein Code nicht funktioniert, weil er falsch markiert wurde. Der [tt]MWE[/tt]-Knopf in der Toolbar dient lediglich dazu einen Link auf die [mwe][/mwe]-Anleitung zu setzen. Für den [b]Code[/b] eine Minimalbeispiels, ist hingegen der [tt]</>[/tt]-Knopf bzw. ein [b]Code[/b]-Tag zu verwenden.
Da [tt]\definecolor[/tt] lokale arbeitet (was du ja auch ausdrücklich möchtest), kann das nicht funktionieren. Lokale Definitionen enden am Ende der aktuellen Gruppe. Jede Umgebung stellt auch eine Gruppe dar. Damit endet eine Farbdeklaration mit [tt]\definecolor[/tt], die innerhalb einer [tt]subfigure[/tt]-Umgebung vorgenommen wird, immer am zugehörigen [tt]\end{subfigure}[/tt]. Die Farbdeklaration muss also zwingend min. außerhalb der [tt]subfigure[/tt]-Umgebung in die [tt]figure[/tt]-Umgebung verschoben werden:
[code]\documentclass{article}
\usepackage[format=plain]{caption}
\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}% Siehe unbedingt: https://texwelt.de/fragen/19163
\begin{document}
\begin{figure}
\definecolor{mycolor1}{rgb}{1,0,0}%
\definecolor{mycolor2}{rgb}{0.5,1,1}%
\begin{subfigure}[]{\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot+[mark=square*,mycolor1,samples=15]{3*x+2.5*rand};\label{pgfplots:label1}
\end{axis}
\end{tikzpicture}
\caption{Caption A. \ref{pgfplots:label1} mark.}
\end{subfigure}\vfill
\begin{subfigure}[]{\textwidth}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot+[mark=square*,mycolor2,samples=15]{3*x+2.5*rand};\label{pgfplots:label2}
\end{axis}
\end{tikzpicture}
\caption{Caption B. \ref{pgfplots:label2} mark.}
\end{subfigure}
\caption{Caption total: Mark A \ref{pgfplots:label1}, Mark B \ref{pgfplots:label2}.}
\end{figure}
\end{document}
[/code]
Die Pakete, die ich weggelassen habe, werden alle von [tt]pgfplots[/tt] geladen.