根据条件将 pgfplotstable 中的值提取到变量数组中

根据条件将 pgfplotstable 中的值提取到变量数组中

我有关于属性和值的数据,例如

属性缩写值 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}

在此处输入图片描述

相关内容