pgfplotstable:如何找到值小于或等于某个值的行

pgfplotstable:如何找到值小于或等于某个值的行

在此处输入图片描述

我有一个pgfplotstable带有一些值的数据X,这些值按 进行编号No。(我的X值按降序排列。)

如何找到X小于或等于(的第一个值对应的数字例如10

就我而言那就是No= 40

有没有一种优雅的方式与\pgfplotstablesort/pgfplots/iflessthan/

附言:对于我的任务来说,创建一个“排序表”也是可以的,其中 X 值大于“10”的行将被跳过。

\documentclass{article} 
\usepackage{pgfplotstable}

\pgfplotstableread[header=true, col sep=comma]{
No, X
31, 12.9032
32, 12.5000
33, 12.1212
34, 11.7647
35, 11.4286
36, 11.1111
37, 10.8108
38, 10.5263
39, 10.2564
40, 10.0000
41, 9.7561
42, 9.5238
43, 9.3023
44, 9.0909
}{\mytable}

\begin{document}
\pgfplotstabletypeset[string type]{\mytable}
\end{document}

答案1

我认为可以这样做:

在此处输入图片描述

\documentclass{article} 
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}

\pgfplotstableread[header=true, col sep=comma]{
No, X
31, 12.9032
32, 12.5000
33, 12.1212
34, 11.7647
35, 11.4286
36, 11.1111
37, 10.8108
38, 10.5263
39, 10.2564
40, 10.0000
41, 9.7561
42, 9.5238
43, 9.3023
44, 9.0909
}{\mytable}

\pgfplotstablegetrowsof{\mytable}
\pgfmathtruncatemacro\LastRowNo{\pgfplotsretval-1}

\begin{document}
\pgfplotstabletypeset[string type]{\mytable}

\pgfmathsetmacro{\MyValue}{10.2}

\foreach \row in {0,...,\LastRowNo}{%%
 \pgfplotstablegetelem{\row}{X}\of{\mytable}
\pgfmathparse{\pgfplotsretval <= \MyValue ? 1 : 0}% \pgfmathresult % Test
\ifnum\pgfmathresult=1 %
  \pgfmathparse{int(\row-0)}%
  \pgfplotstablegetelem{\pgfmathresult}{No}\of{\mytable}%
  \xdef\MyNo{\pgfplotsretval}%
  \breakforeach% better...
\fi}%%

The last value that was lesser or equal {\MyValue} has the No {\MyNo}. 
\end{document}

相关内容