Referenzieren von Zeilen, deren Stile mit \pgfplotsset festgelegt wurden

Referenzieren von Zeilen, deren Stile mit \pgfplotsset festgelegt wurden

Im MWE-Beispiel unten scheint der Linienstil für die Referenz nicht richtig eingestellt zu sein (im Diagramm sind die Kreise nicht ausgefüllt, beim Verweisen darauf werden sie jedoch ausgefüllt).

Mache ich etwas falsch? Oder ist das ein Fehler? Wenn ja, gibt es eine Problemumgehung? Außer den Stil für alle Zeilen in meinem Dokument manuell festzulegen.

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{
  every axis plot/.append style={thick, black},
  every axis plot post/.append style={
    every mark/.append style={mark size=3,solid,fill opacity=0}
  }
}

\begin{document}
Why is this marker \ref{myline} different but this one
\ref{myline-correct} is correct?

\begin{tikzpicture}
  \begin{axis}
    \addplot[mark=*]
    table [x=x, y=y]{%
      x y
      0 0
      1 1
      2 2
      3 3
      4 4
    };
    \label{myline}

    \addplot[mark=square, mark size=3,solid,fill opacity=0]
    table [x=x, y=y]{%
      x y
      4 0
      3 1
      2 2
      1 3
      0 4
    };
    \label{myline-correct}
  \end{axis}
\end{tikzpicture}
\end{document}

Antwort1

Siehe Abschnitt 4.7.1 des pgfplots-Handbuchs, wo es heißt: „Der Plot-Post-Stil für jede Achse kann verwendet werden, um Teile (oder alle) der Zeichnungsstile zu überschreiben, die für Plots zugewiesen sind.“ Siehe auch Abschnitt 4.5.12, wo die Reihenfolge detailliert beschrieben wird. Das Fazit ist also, dass, wenn Sie die postDirektive löschen,

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{
  every axis plot/.append style={thick, black},
  every axis plot/.append style={
    every mark/.append style={mark size=3,solid,fill opacity=0}
  }
}

\begin{document}
Now both the marker \ref{myline} and \ref{myline-correct} are correct?

\begin{tikzpicture}
  \begin{axis}
    \addplot[mark=*]
    table [x=x, y=y]{%
      x y
      0 0
      1 1
      2 2
      3 3
      4 4
    };
    \label{myline}

    \addplot[mark=square, mark size=3,solid,fill opacity=0]
    table [x=x, y=y]{%
      x y
      4 0
      3 1
      2 2
      1 3
      0 4
    };
    \label{myline-correct}
  \end{axis}
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen