
Я пытаюсь создать новый столбец из другого, вычитая из каждой строки первый. Затем я хочу создать еще один столбец с относительной разницей.
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
TotalDistance
35089
35182
35410
35523
35694
35789
35895
35984
36006
36068
}{\mytable}
\pgfplotstabletypeset[
columns={TotalDistance,LocalDistance},
create on use/LocalDistance/.style={
create col/expr={\thisrow{TotalDistance} - 35089},
},
create on use/DifferenceDistance/.style={
create col/expr={\thisrow{LocalDistance} - \prevrow{LocalDistance}},
},
]{\mytable}
\end{document}
Моя цель — получить:
TD | LD | DD
------+-----+----
35089 | 0 | 0
35182 | 93 | 93
35410 | 321 | 228
35523 | 434 | 113
35694 | 605 | 171
35789 | 700 | 95
35895 | 806 | 106
35984 | 895 | 89
36006 | 917 | 22
36068 | 979 | 62
На данный момент существуют следующие проблемы:
- Как избежать жесткого кодирования
35089
, а вместо этого прочитать его из первой ячейки? - Я получаю ошибкиНеизвестная функция `LocalDistance__column_not_found'когда я пытаюсь набрать столбец DifferenceDistance, даже если столбец LocalDistance будет создан без проблем.
решение1
Вы можете прочитать значение первой ячейки с помощью
\pgfplotstablegetelem{<row>}{<col>}\of\mytable
. Возвращаемое значение будет записано в\pgfplotsretval
.Как предложеноударные, вот пример использования
\pgfplotstablecreatecol
вместо\pgfplotstabletypeset
для добавления столбцов в таблицу:
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
TotalDistance
35089
35182
35410
35523
35694
35789
35895
35984
36006
36068
}{\mytable}
% read the first cell value -> \pgfplotsretval
\pgfplotstablegetelem{0}{TotalDistance}\of\mytable
% add column LocalDistance
\pgfplotstablecreatecol
[expr={\thisrow{TotalDistance} - \pgfplotsretval}]
{LocalDistance}{\mytable}
% add column DifferenceDistance
\pgfplotstablecreatecol
[expr={\thisrow{LocalDistance} - \prevrow{LocalDistance}}]
{DifferenceDistance}{\mytable}
% typeset the table
\pgfplotstabletypeset
[columns={TotalDistance,LocalDistance,DifferenceDistance}]
{\mytable}
\end{document}