如果我想在单元格中出现“间隙”或单词(例如“零”),并且它的值等于 0,我该怎么做?
preproc/expr={##1==0 ? "111" : "##1"}
有效,但类似preproc/expr={##1==0 ? "{}" : "##1"}
或preproc/expr={##1==0 ? "zero" : "##1"}
无效。
\documentclass[border=2pt, varwidth]{standalone}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
1 1
2 {}
3 0
4 4
5 0
6 5
7 6
}\test
The Table: \pgfplotstabletypeset[]{\test} \\
Actual: \pgfplotstabletypeset[
%string type,
columns/1/.style={
% Works fine
preproc/expr={##1==0 ? "111" : "##1"},
% Does not work:
%preproc/expr={##1==0 ? "{}" : "##1"},
%preproc/expr={##1==0 ? "zero" : "##1"},
},
]{\test}
%
Target 1: \begin{tabular}{r r}
1 & 1 \\
2 & {} \\
3 & {} \\
4 & 4 \\
5 & {} \\
6 & 5 \\
7 & 6 \\
\end{tabular}
%
Target 2: \begin{tabular}{r r}
1 & 1 \\
2 & {} \\
3 & zero \\
4 & 4 \\
5 & zero \\
6 & 5 \\
7 & 6 \\
\end{tabular}
\end{document}
答案1
这将打印“缺失”,但不会更改数据。这里的关键是 [string type],因为默认是假设数字。请注意,pgfplots
忽略缺失数据。
\documentclass[border=2pt, varwidth]{standalone}
\usepackage{pgfplotstable}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread[header=false]{
1 1
2 {}
3 0
4 4
5 0
6 5
7 6
}\test
The Table: \pgfplotstabletypeset[string type,
every head row/.style={output empty row},
columns/1/.style={string replace={}{missing}}
]{\test} \\
\begin{tikzpicture}
\begin{axis}
\addplot table[x=0,y=1]{\test};
\end{axis}
\end{tikzpicture}
\end{document}