![PGFplotstable:是否可以为“行”而不是“列”设置数字格式?](https://linux22.com/image/253285/PGFplotstable%EF%BC%9A%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%B8%BA%E2%80%9C%E8%A1%8C%E2%80%9D%E8%80%8C%E4%B8%8D%E6%98%AF%E2%80%9C%E5%88%97%E2%80%9D%E8%AE%BE%E7%BD%AE%E6%95%B0%E5%AD%97%E6%A0%BC%E5%BC%8F%EF%BC%9F.png)
使用 pgfplotstable,可以直接使用以下方法设置列号格式
columns/(columnname)/.style={(format)}
我想做的是更改特定行的数字格式。在我的例子中,表格的最后一行是百分比格式,而表格的其余部分是定点格式。
有没有办法设置一行的数字格式,以覆盖所有列的数字格式?
作为后续问题,百分比是否有预设的数字格式?
干杯
编辑:
感谢 Christian,现在我离成功更近了一步。但是,我现在遇到了一个问题,即dec sep align
创建的每个列中都出现了两个“%”符号。我该如何删除第一个符号?查看图片的最后一行,了解我的意思。
答案1
Pgfplotstable 具有类似的样式every row no <index>
,并且还有一些其他样式。
然而,这些样式在处理过程中应用得相当晚:内容在那个阶段已经固定了。
我接受此作为功能请求。
不过,有一个简单的方法可以启用这种样式:名为 的样式every row <rowindex> column <colindex>
。这些样式允许内容生成的变化,特别是它们尊重数字格式的变化。
您可以将此类样式的序列分组,以便使用以下方式轻松更改特定列的所有值
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableset{
% #1 = row index
% #2 = row style keys
row style/.style 2 args={
every row #1 column 0/.style={#2},
every row #1 column 1/.style={#2},
every row #1 column 2/.style={#2},
every row #1 column 3/.style={#2},
every row #1 column 4/.style={#2},
every row #1 column 5/.style={#2},
every row #1 column 6/.style={#2},
every row #1 column 7/.style={#2},
every row #1 column 8/.style={#2},
every row #1 column 9/.style={#2},
every row #1 column 10/.style={#2},
}
}
\pgfplotstabletypeset[
row style={3}{sci},
]{
a b
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
}
\end{document}
编辑:关于您的第二个问题:您想要格式化百分比(即乘以 100 并附加'%'):
\documentclass{standalone}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstabletypeset[
columns/A/.style={
column type=r,
preproc/expr={100*##1},
postproc cell content/.append style={
/pgfplots/table/@cell content/.add={}{\%},
},
fixed,
fixed zerofill,
},
]
{
A
0.01
1
0.1234
0.5
}
\end{document}
答案2
对于那些想知道我将百分比格式应用于行而不是列的解决方案的人,只需输入 Christian 的答案中的代码即可Pgfplotstable:我如何添加百分号(并尊重十进制九进制对齐)?作为第二个参数{#2}
:
\pgfplotstableset{
% #1 = row index
% #2 = row style keys
row style/.style 2 args={
every row #1 column 0/.style={#2},
every row #1 column 1/.style={#2},
every row #1 column 2/.style={#2},
every row #1 column 3/.style={#2},
every row #1 column 4/.style={#2},
every row #1 column 5/.style={#2},
every row #1 column 6/.style={#2},
every row #1 column 7/.style={#2},
every row #1 column 8/.style={#2},
every row #1 column 9/.style={#2},
every row #1 column 10/.style={#2},
}
}
\pgfplotstableread[col sep=comma]{data.csv}\datatable
\pgfplotstabletypeset[
row style={(the row number with percentage data)}{precision=2,postproc cell content/.append code={
\ifnum1=\pgfplotstablepartno
\pgfkeysalso{@cell content/.add={}{\%}}%
\fi
}}
]{\datatable}