pgfplots: Darstellung einer Teilfigur pro Land aus einer Datendatei

pgfplots: Darstellung einer Teilfigur pro Land aus einer Datendatei

Ich habe Daten im CSV-Format auf Länder-Jahres-Ebene und möchte mithilfe von pgfplots eine bestimmte Variable im Zeitverlauf darstellen, mit einer Teilabbildung pro Land. Meine Idee war, eine groupplotUmgebung zu verwenden: und eine Schleife darin, die alle Länder durchläuft und Daten „herausfiltert“, um nur ein Land beizubehalten.

Das Problem ist, dass ich die Daten nicht einmal filtern kann, um nur ein Land zu behalten. Dies ist mein (nicht) funktionierendes Beispiel, angepasst von diesemFrage, versucht zu filtern aufcountry == GER

\documentclass{standalone}
\usepackage{filecontents}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\usepackage{pgfplotstable}

\begin{filecontents}{CountryYears.csv}
    country,year,vartoplot
    AUT,1998,.1
    AUT,1999,.2
    AUT,2000,.7
    GER,1999,.4
    GER,2000,.45
    GER,2001,.7
    GER,2002,.6
    FRA,2000,.5
    FRA,2001,.75
    FRA,2002,.57894
    FRA,2003,.549
\end{filecontents}

\begin{document}
    \pgfplotstableset{columns/country/.style={string type}}
    \pgfplotstableread[col sep=comma]{CountryYears.csv}\loadeddata

      \begin{tikzpicture}
      \begin{axis}[
      x filter/.code={\pgfplotstablegetelem{\coordindex}{country}\of{\loadeddata}
        \pgfmathtruncatemacro{\tempva}{\pgfplotsretval == GER ? 1: 0}
        \ifnum\tempva>0%true
        \else%false
        \def\pgfmathresult{}
        \fi
      },
      ]
      \addplot[only marks] table[x=year,y=vartoplot] {\loadeddata};
      \end{axis}
      \end{tikzpicture}
\end{document}

Ich vermute, es funktioniert nicht, weil ich versuche, nach einer Zeichenfolgenspalte zu filtern? (Diejenige, die das Land enthält.) Aber nicht einmal da bin ich mir sicher. Jedenfalls wäre ich für einige Hinweise zum Filterproblem oder vielleicht für einen Vorschlag zu einem eleganteren Ansatz zum Erstellen dieser Länder-Subgraphen dankbar.

Antwort1

Definieren Sie zunächst eine Zeichenfolge wie folgt:

\def\AUTstring{AUT}

und dann schreiben Sie Ihren Filter wie

    x filter/.code={
        \pgfplotstablegetelem{\coordindex}{country}\of{\loadeddata}
        \ifx\pgfplotsretval\AUTstring
        \else
            \pgfmathparse{inf}
        \fi
    }

Das heißt, wenn \pgfplotsretvalja, AUTdann tun Sie nichts. Andernfalls lassen Sie diesen Punkt weg.

verwandte Informationen