![pgfplotstable:如何使用循环创建行](https://linux22.com/image/405315/pgfplotstable%EF%BC%9A%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%BE%AA%E7%8E%AF%E5%88%9B%E5%BB%BA%E8%A1%8C.png)
我想创建多个包含计算数据的表行。
所以我认为我必须使用\pgfplotstablevertcat{<1>}{<2>}
但是像这样的事情(例如!)不起作用:
\foreach \k in {1,...,5}{
\pgfplotstableread{
\k \pgfmathparse{\k^2}\pgfmathresult
}\dataX % How to name this best way?
}
我该怎么办?
\documentclass[a4paper]{article}
\usepackage{pgfplotstable}
\begin{document}
This works:
% Data
\pgfplotstableread[]{
1 1
}\data
\pgfplotstableread{
2 4
}\dataII
% Concatenate
\pgfplotstablevertcat{\data}{\dataII}
% Output
\pgfplotstabletypeset[
columns/0/.style={column name=$k$},
columns/1/.style={column name=$k^2$}
]{\data}
This does not work:
%\foreach \k in {1,...,5}{
%\pgfplotstableread{
%\k \pgfmathparse{\k^2}\pgfmathresult
%}\dataX % How to name this best way
%}
\end{document}
答案1
您可能正在寻找create on use
(或\pgfplotstablecreatecol
)。
\documentclass[a4paper]{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\begin{document}
This is how it works:
\pgfplotstableset{create on use/k/.style={
create col/set list={1,...,10}},
columns/my new col/.style={string type}}
\pgfplotstableset{create on use/ksquared/.style={
create col/assign/.code={
\getthisrow{k}\entry
\pgfmathtruncatemacro{\mynewentry}{\entry*\entry}%
\pgfkeyslet{/pgfplots/table/create col/next content}\mynewentry}}}
\pgfplotstablenew[columns={k,ksquared}]{10}\cistable
\pgfplotstabletypeset[columns/k/.style={column name=$k$},
columns/ksquared/.style={column name=$k^2$}]{\cistable}
\end{document}