tikzpicture 因从文件中获取日期输入坐标而失败

tikzpicture 因从文件中获取日期输入坐标而失败

我在实现 tikzpicture 时遇到了问题。我想用日期和时间以及气候变量绘制文件。我遵循了 PGF 手册第 4.21.2 节“日期作为输入坐标”中的操作,如果我“手动”制作坐标表,一切都会按预期进行:

    \begin{tikzpicture}
            \begin{axis}[
            date coordinates in=x,
            xtick=data,
            xticklabel style=
            {rotate=90,anchor=near xticklabel},
            xticklabel={\day.\month.},
            xlabel={2015},
            date ZERO=2015-01-01,% <- improves precision!
            ]
                    \addplot coordinates {
                    (2015-12-21 00:00, 17.54)
                    (2015-12-21 00:59, 17.23)
                    (2015-12-21 01:58, 16.96)
                    (2015-12-21 02:57, 16.88)
                    (2015-12-21 03:56, 16.70)
                    (2015-12-21 04:55, 16.36)
                    (2015-12-21 05:54, 17.02)
                    (2015-12-21 06:53, 19.24)
                    (2015-12-21 07:52, 20.40)
                    (2015-12-21 08:51, 22.06)
                    };
            \end{axis}
    \end{tikz

但是当解析器必须查找文件时,如下所示:

    \begin{tikzpicture}
            \begin{axis}[
            date coordinates in=x,
            xtick=data,
            xticklabel style=
            {rotate=90,anchor=near xticklabel},
            xticklabel={\day.\month.},
            xlabel={2015},
            date ZERO=2015-01-01,% <- improves precision!
            ]
            \addplot table[x=date,y=temperature] {plotdata/temp_summer.dat};
            \end{axis}
    \end{tikzpicture}

然后会出现以下错误:

! Package PGF Math Error: Could not parse input '00:00,' as a floating point number, sorry. The unreadable part was near ':00,'..
See the PGF Math package documentation for explanation. Type  H <return>  for immediate help.
 ...
l.421 ...=temperature] {plotdata/temp_summer.dat};

我收到有关 00:00 或任何其他小时的错误消息。有趣的是,如果我在 .tex 文件本身中引入坐标,它就会起作用。

我怀疑这是 PGF 文件解析器的一个 BUG,但我不确定,我的 .tex 系统是:

pdfTeX,版本 3.1415926-2.5-1.40.14(MiKTeX 2.9 64 位)

包 pgfplots 通知“compat/show suggested version=true”:文档已使用最新的功能集生成(\pgfplotsset{compat=1.13})。

让我告诉你们,如果我删除了 HH:MM,那么文件编译会成功,但这不是我需要的!

如有任何想法或帮助,我们将不胜感激。

先感谢您.....

答案1

这是 MWE

\begin{filecontents*}{data.dat}
date, temperature
2015-12-21 00:00, 17.54
2015-12-21 00:59, 17.23
2015-12-21 01:58, 16.96
2015-12-21 02:57, 16.88
2015-12-21 03:56, 16.70
2015-12-21 04:55, 16.36
2015-12-21 05:54, 17.02
2015-12-21 06:53, 19.24
2015-12-21 07:52, 20.40
2015-12-21 08:51, 22.06
\end{filecontents*}
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
        \begin{axis}[
        date coordinates in=x,
        xtick=data,
        xticklabel style=
        {rotate=90,anchor=near xticklabel},
        xticklabel={\day.\month. \hour:\minute},
        xlabel={2015},
        date ZERO=2015-01-01,% <- improves precision!
        ]
        \addplot table[x=date,y=temperature,col sep=comma] {data.dat};
        \end{axis}
\end{tikzpicture}
\end{document}

结果是

在此处输入图片描述

请注意,如果文件中的 sep 列是逗号,则必须使用它col sep=comma作为选项:table

\addplot table[x=date,y=temperature,col sep=comma] {data.dat};

然后还必须使用逗号作为列标题之间的分隔符:date, temperature。我猜,你的文件中缺少这个。

相关内容