![绘制具有两个条件的数据](https://linux22.com/image/369335/%E7%BB%98%E5%88%B6%E5%85%B7%E6%9C%89%E4%B8%A4%E4%B8%AA%E6%9D%A1%E4%BB%B6%E7%9A%84%E6%95%B0%E6%8D%AE.png)
我可以根据一列中的值绘制数据,如下所示:
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{data.csv}
a,b,c,d
0,0,1,2
2,2,1,2
3,-3,1,3
2,1,2,4
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[only marks]
table[x=a, y=b, col sep=comma,
restrict expr to domain={\thisrow{c}}{1:1}]{data.csv};
\end{axis}
\end{tikzpicture}
\end{document}
是否可以应用两个条件?例如,我想绘制 c = 1 中的值和 d = 2 中的值的数据,而不绘制仅适用一个条件的数据。
答案1
您可以使用x expr
来应用条件。如果结果不为真,则将 x 值设置为nan
:
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents}{data.csv}
a,b,c,d
0,0,1,2
2,2,1,2
3,-3,1,3
2,1,2,4
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[only marks]
table[
x expr={and(\thisrow{c}==1,\thisrow{d}==2)==1?\thisrow{a}:nan},
y=b,
col sep=comma,
]{data.csv};
\end{axis}
\end{tikzpicture}
\end{document}
结果: