Überspringen Sie die Zeile in der pgfplots-Tabelle basierend auf der dritten Variable

Überspringen Sie die Zeile in der pgfplots-Tabelle basierend auf der dritten Variable

Ich habe die folgenden Daten. Ich möchte sie so grafisch darstellen, dass es eine Linie für alle Zeilen gibt, bei denen Bias (die letzte Spalte) Null ist, und eine weitere Linie für alle Zeilen, bei denen Bias Eins ist. Ich dachte, das könnte man vielleicht erreichen, indem man Zeilen mit Bias=0 überspringt und dann ein weiteres \addplot hinzufügt, das Zeilen überspringt, wenn Bias=1 ist.

Aus Abschnitt 4.21 des pgfplots-Handbuchs erkenne ich jedoch nur, dass Zeilen auf Grundlage der Werte der dargestellten Punkte übersprungen werden können, nicht auf Grundlage einer dritten Variablen.

Gibt es eine Möglichkeit, Punkte basierend auf dem Wert einer dritten Variable zu überspringen? Oder gibt es vielleicht eine bessere Möglichkeit, dies zu tun, ohne die Form der Eingabedatei zu ändern?

Danke.

\documentclass{article}
\usepackage{pgfplotstable}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
xlabel=Period,
ylabel=ATE]
\addplot table[x=period,y=b] {
period b se z pvalue ll ul es bias
-4 -13.068966 4.7957403 -2.7251195 .00642782 -22.468444 -3.6694872 -.50936721 0
-3 -13.576271 2.9311518 -4.6317189 3.626e-06 -19.321223 -7.8313192 -.44067295 0
-2 -14.932203 2.8516346 -5.2363664 1.638e-07 -20.521304 -9.3431023 -.51395893 0
-1 -14.754237 2.3839111 -6.1890887 6.051e-10 -19.426617 -10.081857 -.52921471 0
0 -13.177966 2.9938464 -4.4016841 .00001074 -19.045797 -7.310135 -.47328062 0
0 -.83020764 2.8927267 -.2869983 .77411362 -6.4998477 4.8394324 -.47328062 1
1 -10.341667 3.0767608 -3.3612189 .00077599 -16.372007 -4.3113263 -.39240307 0
1 -1.6596195 2.7877028 -.59533588 .55161898 -7.1234166 3.8041776 -.39240307 1
};
\end{axis}
\end{tikzpicture}

\end{document}

Antwort1

Mit können Sie x exprdie x-Koordinaten auswählen:

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel=Period,
ylabel=ATE]

\pgfplotstableread{
period b se z pvalue ll ul es bias
-4 -13.068966 4.7957403 -2.7251195 .00642782 -22.468444 -3.6694872 -.50936721 0
-3 -13.576271 2.9311518 -4.6317189 3.626e-06 -19.321223 -7.8313192 -.44067295 0
-2 -14.932203 2.8516346 -5.2363664 1.638e-07 -20.521304 -9.3431023 -.51395893 0
-1 -14.754237 2.3839111 -6.1890887 6.051e-10 -19.426617 -10.081857 -.52921471 0
0 -13.177966 2.9938464 -4.4016841 .00001074 -19.045797 -7.310135 -.47328062 0
0 -.83020764 2.8927267 -.2869983 .77411362 -6.4998477 4.8394324 -.47328062 1
1 -10.341667 3.0767608 -3.3612189 .00077599 -16.372007 -4.3113263 -.39240307 0
1 -1.6596195 2.7877028 -.59533588 .55161898 -7.1234166 3.8041776 -.39240307 1
}\datatable

\addplot
  table[x expr={\thisrow{bias}==1?nan:\thisrow{period}},y=b]\datatable;
\addplot
  table[x expr={\thisrow{bias}==0?nan:\thisrow{period}},y=b]\datatable;
\end{axis}
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen