使用 PGFPLOTSTABLE 解析 .csv 文件中的角度

使用 PGFPLOTSTABLE 解析 .csv 文件中的角度

我一直在尝试找到正确的方法,使用 加载 CSV 文件中的角度,使用的命令pgfplotstable格式化它们,然后使用 显示它们。我的想法是将后处理阶段的数据传递给命令,但我收到以下错误:siunitx\ang{}pgfplotstable\ang

失控参数?\l__siunitx_number_arg_tl \tl_map_function:NN \l__siunitx_number_arg_tl \ETC。!扫描 __siunitx_number_in_parse_relation:w 的使用时文件结束。

如果我删除该\ang命令,所有内容都会编译,因此我推测我对数字的格式化不正确。有没有正确的方法可以使用 加载 .csv 中的角度数据pgfplotstable

我的 MWE 如下:

\documentclass[margin=5mm,preview]{standalone}
\usepackage{siunitx}
\usepackage{booktabs} 
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.13}
\usepackage{filecontents}                              

\begin{filecontents*}{mytable.csv}
angle, magnitude
0,1
5;15;0,2
10;5;5,4
\end{filecontents*}

\begin{document}
\pgfplotstabletypeset[
    col sep=comma, 
    string type,
    header=true,
   every head row/.style={before row=\toprule,after row=\midrule},
   every last row/.style={after row=\bottomrule},
display columns/angle/.style={string type,postproc cell content/.code={\ang{#1}}},  
display columns/magnitude/.style={column name={$a$}},
]{mytable.csv}
\end{document}

结果如下:

结果

编辑1:我在行中使用了列名display columns/../.style,错误消失了,但是数据根本没有被处理。

编辑2:我添加了上次编辑的结果。

答案1

要使其发挥作用,有几个注意点。

  1. display columns与列一起使用指数。当列名很奇怪或者你不想记住时,它很有用。因此你需要编号。它从 0 开始。
  2. 当你在彼此内部实现嵌套样式或代码参数时,你需要将#字符加倍以表示输出的内容。如果你有

    a/.style={b/.style={c=#1}}
    

    并且您提供,a=red那么您的意思是,b/.style={c=red}因为这是的输入a。相反,如果您想b/.style={c=#1}在的样式定义中定义,a那么您需要a/.style={b/.style={c=##1}}

  3. 后处理执行的代码不会替换单元格内容。您需要执行一些代码来更改单元格内容。

所以它就变成了;

\pgfplotstabletypeset[
    col sep=comma, 
    string type,
    header=true,
   every head row/.style={before row=\toprule,after row=\midrule},
   every last row/.style={after row=\bottomrule},
display columns/0/.style={string type,
    postproc cell content/.code={%
        \pgfkeyssetvalue{/pgfplots/table/@cell content}{\ang{##1}}%
    }
}, 
display columns/1/.style={column name={$a$}},
]{angle, magnitude
0,1
5;15;0,2
10;5;5,4
}

在此处输入图片描述

相关内容