根據第三個變數跳過 pgfplots 表中的行

根據第三個變數跳過 pgfplots 表中的行

我有以下數據。我想將其繪製成圖表,以便有一條線代表所有偏差(最後一列)為零的行,另一條線代表所有偏差為 1 的行。我想也許這可以透過基於偏差=0 跳過行,然後添加另一個在偏差=1 時跳過行的 \addplot 來完成。

然而,從 pgfplots 手冊的第 4.21 節中,我只看到可以根據繪製點的值跳過行,而不是根據第三個變數。

有沒有辦法根據第三個變數的值跳過點?或者是否有更好的方法來做到這一點,而不改變輸入文件的形式?

謝謝。

\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}

答案1

您可以使用x expr選擇 x 座標:

\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}

在此輸入影像描述

相關內容