pgfplotstabel - 创建带有时间列的表格

pgfplotstabel - 创建带有时间列的表格

我尝试从文件中创建一个包含日期和时间列的表格data.txt。我可以创建一个图表,但是当我\pgfplotstabletypeset为表格键入内容时,会出现以下错误:

! 包 pgfplots 错误:表 'data.txt' 似乎在第 1 行包含太多列:

我也尝试添加选项\pgfplotstabletypeset[col sep=comma]{data.txt}。然后我收到此错误:

!PGF 软件包数学错误:无法将输入的“2015-09-13 21:00:00”解析为浮点数,抱歉。

我该如何解决这个问题?谢谢!

\documentclass{article}
\usepackage{pgfplotstable}
\usepgfplotslibrary{dateplot}
\pgfplotsset{compat=1.15}
\usepackage{filecontents}
\begin{filecontents*}{data.txt}
date, value
2015-09-13 21:00:00, 922
2015-09-13 22:00:00, 3993
2015-09-13 23:00:00, 3003
2015-09-14 00:00:00, 991
2015-09-14 01:00:00, 2021
2015-09-14 02:00:00, 841
2015-09-14 03:00:00, 2812
2015-09-14 14:00:00, 991
2015-09-14 15:00:00, 231
2015-09-14 16:00:00, 678

\end{filecontents*}
\begin{document}

\pgfplotstabletypeset[
    columns/date/.style={date type={\day.\month.\year},
                                       column name=Datum},
    columns/date/.style={date type={\hour:\minute},
                                       column name=Zeit},
    columns/value/.style={column name=Value},
    ]{data.txt}

\end{document}

答案1

这里有两个问题:

首先,您需要使用col sep=comma,因为这就是中列的分隔方式data.txt

第二,date type不支持时间。因此命令\hour\minute未定义。

如果您可以控制 的格式data.txt,那么最简单的方法是将其更改为三列(date, time, value)。如果您省略秒数,则该time列已包含您想要的格式。

然后使用新列的列类型string type,它将按原样打印内容(即,它不会被解析为数字)。

代码:

\documentclass{article}
\usepackage{pgfplotstable}
\usepgfplotslibrary{dateplot}
\pgfplotsset{compat=1.15}
\usepackage{filecontents}
\begin{filecontents*}{data.txt}
date, time, value
2015-09-13, 21:00, 922
2015-09-13, 22:00, 3993
2015-09-13, 23:00, 3003
2015-09-14, 00:00, 991
2015-09-14, 01:00, 2021
2015-09-14, 02:00, 841
2015-09-14, 03:00, 2812
2015-09-14, 14:00, 991
2015-09-14, 15:00, 231
2015-09-14, 16:00, 678

\end{filecontents*}
\begin{document}

\pgfplotstabletypeset[col sep=comma,
    columns/date/.style={date type={\day.\month.\year},
                                       column name=Datum},
    columns/time/.style={string type,
                                       column name=Zeit},
    columns/value/.style={column name=Value},
    ]{data.txt}

\end{document}

如果您还想绘制数据,可以像这样制作四列:

dt, date, time, value
2015-09-13 21:00, 2015-09-13, 21:00, 922

在这种情况下,您必须向表中添加一列列表,因此第一个将被忽略:

\pgfplotstabletypeset[col sep=comma,
    columns={date,time,value},

相关内容