
Tengo datos en formato csv a nivel de país-año y, usando pgfplots, me gustaría trazar una variable determinada a lo largo del tiempo, con una subfigura por país. Mi idea era utilizar un groupplot
entorno: y un bucle interno, que recorrería el conjunto de países y "filtraría" datos para mantener un solo país.
El problema es que ni siquiera puedo filtrar datos para mantener un solo país. Este es mi ejemplo (no) funcional, adaptado de estepregunta, tratando de filtrarcountry == 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}
Sospecho que no funciona porque estoy intentando filtrar en una columna de cadena. (El que contiene el país). Pero ni siquiera estoy seguro de eso. De todos modos, agradecería algunos consejos sobre el problema del filtrado o quizás alguna sugerencia sobre un enfoque más elegante para hacer estos subgrafos de países.
Respuesta1
Primero defina una cadena de la siguiente manera:
\def\AUTstring{AUT}
y luego escribe tu filtro como
x filter/.code={
\pgfplotstablegetelem{\coordindex}{country}\of{\loadeddata}
\ifx\pgfplotsretval\AUTstring
\else
\pgfmathparse{inf}
\fi
}
Es decir, si \pgfplotsretval
es así AUT
, entonces no hagas nada. De lo contrario, abandone este punto.