Seite 1 von 1
Subfigure Umgebung mit pgfplots und legend Eintrag Referenzierung
Verfasst: Mi 20. Jan 2021, 17:40
von robert26
Hallo zusammen,
ich arbeite an einem großen Dokument mit vielen Abbildungen. Dabei füge ich auch tikzfigures innerhalb der Subfigure Umgebung ein. In der Caption der Abbildung möchte ich nun die Markierung referenzieren wie im pgfplot manual beschrieben über \label und \ref. Zusätzlich definiere ich lokal Farben für die entsprechende Abbildung.
Das Problem besteht nun darin, dass die Farbe der Marker in der Hauptcaption nicht korrekt ist und eine Fehlermeldung erscheint: "Package pgfkeys Error: I do not know the key '/tikz/mycolor1' and I am going". Nur in den Captions der Subfigures ist das Referenzieren möglich. Mit einer globalen Farbdefinition kann das Problem gelöst werden. Das möchte ich aber unbedingt vermeiden.
Ich habe mich schon intensiv durch das subcaption manual und andere Foren gearbeitet aber bin leider nicht fündig geworden.
Kennt jemand eine Lösung unabhängig von globalen Farbdefinitionen?
Im Beispiel ist das enstprechende Problem zu erkennen.
\documentclass{article}
\usepackage{xcolor}
\usepackage[format=plain]{caption}
\usepackage{subcaption}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{subfigure}[]{\textwidth}
\centering
\definecolor{mycolor1}{rgb}{1,0,0}%
\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
\definecolor{mycolor2}{rgb}{0.5,1,1}%
\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}
Re: Subfigure Umgebung mit pgfplots und legend Eintrag Referenzierung
Verfasst: Mi 20. Jan 2021, 18:21
von gast
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.
Re: Subfigure Umgebung mit pgfplots und legend Eintrag Referenzierung
Verfasst: Do 21. Jan 2021, 07:35
von robert26
Vielen Dank für die schnelle Antwort. Mit deiner Lösung kann ich jetzt auf jeden Fall arbeiten.