Pgfplotstable-插入新列

Pgfplotstable-插入新列

我知道我可以通过以下方式创建新专栏

create on use/newCol/.style={
    create col/set list={Some content, Some other content}
},
columns/newCol/.style={string type},
columns = {newCol, [index] 0, [index] 1, [index] 2, [index] 3},

一切都很好,但如果我不知道表格总共有多少列怎么办?
有没有办法简单地将新列(预)附加到现有列,而无需指定表中的所有其他列?

答案1

由于您不知道列数,我假设您正在从外部文件读取表格。

在这种情况下,您只需在 pgfplotstable 之前添加一个普通的单列表即可。

\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\usepackage{booktabs}

\begin{filecontents*}{\jobname.dat}
    x y
    1 2
    2 3
    3 4
    4 5
\end{filecontents*}

\pgfplotstableset{% global config, for example in the preamble
    every last row/.style={after row=\bottomrule}
}

\begin{document}
    \begin{table*}
        \begin{tabular}{c}
            \toprule
            This\\
            \midrule
            is \\
            a column \\
            added \\
            before \\
            \bottomrule
        \end{tabular}%
        \pgfplotstabletypeset[
            every head row/.style={before row=\toprule,after row=\midrule}
            ]{\jobname.dat}
    \end{table*}
\end{document}

在此处输入图片描述

答案2

也许我误解了这个任务,但这似乎没问题:

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\begin{document}
\section{Example-Table with unknown / random Number of Columns and Rows}
\subsection{Raw Data}
\pgfmathsetmacro\xrand{random(3, 7)}
\pgfmathsetmacro\yrand{random(5, 11)}
\xrand\, colums and \yrand\, rows. 

\newwrite\mytable
\immediate\openout\mytable=\jobname-table.txt%
\newcommand{\row}{}% reserv Name
\foreach \Y  in {1,...,\yrand}{%%%
\let\row=\empty% create List
\foreach \X  in {1,...,\xrand}{%%
\pgfmathparse{\Y}
  \ifx\empty\row{} \xdef\row{\pgfmathresult}%
  \else \xdef\row{\row,\pgfmathresult}%
  \fi
}%%
\noindent\row \\ % show
\immediate\write\mytable{\row}% save
}%%%
\immediate\closeout\mytable

%Test: \pgfplotstabletypeset[string type, col sep=comma]{\jobname-table.txt}

\subsection{Add a new Column}
\pgfplotstableset{create on use/NewCol/.style={
create col/set list={a,b,c,d},
},
columns/NewCol/.style={string type},
}

\pgfmathsetmacro\Xrand{\xrand-1}
\pgfplotstabletypeset[col sep=comma, 
columns={NewCol,0,1,...,\Xrand},
empty cells with={---},
every head row/.style={after row=\hline}
]{\jobname-table.txt}
\end{document}

请注意,该部分\newwrite\mytable .......与问题本身无关。它只是一种创建行数和列数未知或随机的任意表的“复杂”方法。

相关内容