![根据条件将 pgfplotstable 中的值提取到变量数组中](https://linux22.com/image/394641/%E6%A0%B9%E6%8D%AE%E6%9D%A1%E4%BB%B6%E5%B0%86%20pgfplotstable%20%E4%B8%AD%E7%9A%84%E5%80%BC%E6%8F%90%E5%8F%96%E5%88%B0%E5%8F%98%E9%87%8F%E6%95%B0%E7%BB%84%E4%B8%AD.png)
我有关于属性和值的数据,例如
属性缩写值 Atr1 Abb1 20 Atr2 Abb2 0 Atr3 Abb3 60 Atr4 Abb4 0 ....
根据属性的值,我应该在小页面环境中显示属性列表...我需要显示所有值高于零的属性。
我曾尝试使用 filecontents 和 pgfplotstable 来执行此操作,但不知何故,我只能从位于最后一行之后的一行中获取值。
\documentclass{article}
\usepackage{calc} \usepackage{afterpage} \usepackage{tikz} \usetikzlibrary{spy} \usetikzlibrary{fit,calc,positioning} \usetikzlibrary{shapes.geometric} \usetikzlibrary{arrows} \usepackage{filecontents} \usepackage{pgfplotstable} \usepackage{ifthen} \usepackage{etoolbox} \usepackage{tabulary} \usepackage{arrayjobx,datatool,multirow,forloop}
\begin{filecontents*}{topatributtes.csv} Name, Abbreviation, Percentage Atribute1, R, 0 Atribute2, I, 0 Atribute3, A, 70 Atribute4, S, 35 Atribute5, E, 0 Atribute6, C, 0 \end{filecontents*}
\pgfplotstableread[col sep=comma]{topatributtes.csv}\datatableA
\newarray\Attributes \newarray\Values \newcounter{nr} \stepcounter{nr} \pgfplotstablegetrowsof{\datatableA} \pgfmathsetmacro{\RowsInTable}{\pgfplotsretval-1} \foreach \k in {0,...,\RowsInTable} { \pgfplotstablegetelem{\k}{Percentage}\of{\datatableA}\global\let\LabelValue=\pgfplotsretval \ifthenelse{\LabelValue > 0}{ \pgfplotstablegetelem{\k}{Abbreviation}\of{\datatableA}\global\let\AbbrName=\pgfplotsretval\Values(\arabic{nr})=\LabelValue \pgfplotstablegetelem{\k}{Name}\of{\datatableA}\global\let\LabelName=\pgfplotsretval\Attributes(\arabic{nr})=\LabelName \stepcounter{nr}}{}
}
\begin{document}
\begin{minipage}{236.3px} \vspace*{10px} \centering{\fontsize{16px}{30px}\selectfont\textsl{Top Compatibility Attributes}} \newcounter{st}% \addtocounter{nr}{-1} \begin{itemize} \forloop{st}{1}{\not{\value{st} > \value{nr}}}{% \item \Attributes(\arabic{st}) \Values(\arabic{st}) } \end{itemize} \end{minipage}
\end{document}
我想要一个动态列表,像这样
属性3
属性5
答案1
欢迎使用 TeX-SE!老实说,您的代码中有很多我不明白的地方。不过,下面只打印正值。也许这是您可以借鉴的东西。
\documentclass{article}
\usepackage{filecontents}
\usepackage{pgfplotstable}
\begin{filecontents*}{topatributtes.csv}
Name, Abbreviation, Percentage
Atribute1, R, 0
Atribute2, I, 0
Atribute3, A, 70
Atribute4, S, 35
Atribute5, E, 0
Atribute6, C, 0
\end{filecontents*}
\begin{document}
\begin{minipage}{236.3px}
\vspace*{10px}
\centering\fontsize{16px}{30px}\selectfont\textsl{Top Compatibility Attributes}
\pgfplotstableread[col sep=comma]{topatributtes.csv}\datatableA
\pgfplotstablegetrowsof{\datatableA}
\pgfmathsetmacro{\RowsInTable}{\pgfplotsretval-1}
\foreach \k in {0,...,\RowsInTable}
{\pgfplotstablegetelem{\k}{Percentage}\of{\datatableA}
\pgfmathtruncatemacro{\itest}{sign(\pgfplotsretval)}
\ifnum\itest=1
\pgfplotsretval\par
\fi
}
\end{minipage}
\end{document}