为何信息未呈现?

为何信息未呈现?

这是我想要编译的代码:

\documentclass{article}

\usepackage{tikz, pgfplots}
\usepgfplotslibrary{dateplot}

% from https://tex.stackexchange.com/a/288225/231104

\def\pgfplotslibdateplothour:minutetofloat#1:#2.{
    \pgfmathparse{#1+#2/60}
}
\def\pgfplotslibdateplofloattothour:minute#1.{
    \pgfmathsetmacro\hour{int(floor(#1))}
    \pgfmathsetmacro\minute{int((#1-\hour)*60)}
    \ifnum\hour<10\edef\hour{0\hour}\fi
    \ifnum\minute<10\edef\minute{0\minute}\fi
}
\pgfplotsset{
    /pgfplots/time coordinates in/.code={%
        \pgfkeysdef{/pgfplots/#1 coord trafo}{%
            \pgfplotslibdateplothour:minutetofloat##1.
        }
        \pgfkeysdef{/pgfplots/#1 coord inv trafo}{
            \pgfplotslibdateplofloattothour:minute##1.
        }
    }
}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
time coordinates in=x,
xticklabel={\hour:\minute},
]
\addplot coordinates {
(10:00, 0)
(10:30, 25)
(10:40, 28)
(11:00, 40)
(11:15, 42)
(11:30, 50)
};
\end{axis}
\end{tikzpicture}

\end{document}

但在编译时,它只会给出“出现错误”的标志。似乎代码缺少了一些重要的东西,但我找不到是什么。

请帮忙,谢谢!

答案1

PGFPLOTS 手册在用户转换章节中提到(版本 1.17 的第 386 页):

评论: 可能需要进行设置 \pgfplotsset{ xticklabel={\tick}, scaled x ticks=false, plot coordinates/math parser=false, }以避免使用数字格式化例程\tick或刻度刻度方法的数字。

一些实验表明,plot coordinates/math parser=false在这种情况下只需要。这允许代码中定义的函数将例如 10:30 转换为 10.5,PGFplots 可以使用它来找到 x 轴上的正确位置。

另一个问题是逆变换,例如从 10.5 回到 10:30。因为浮点到小时函数的模式.中有一个,即,所以只看到,然后假设参数是完整的。将其更改为,例如可修复此问题,因此,在函数头中,也在 内的调用中。10.5floattothour:minute#1.10:floattothour:minute#1:coord inv trafo

梅威瑟:

\documentclass{article}

\usepackage{tikz, pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{dateplot}

% from https://tex.stackexchange.com/a/288225/231104

\def\pgfplotslibdateplothour:minutetofloat#1:#2.{
    \pgfmathparse{#1+#2/60}
}
\def\pgfplotslibdateplofloattothour:minute#1:{
    \pgfmathsetmacro\hour{int(floor(#1))}
    \pgfmathsetmacro\minute{int((#1-\hour)*60)}
    \ifnum\hour<10\edef\hour{0\hour}\fi
    \ifnum\minute<10\edef\minute{0\minute}\fi
}
\pgfplotsset{
    /pgfplots/time coordinates in/.code={%
        \pgfkeysdef{/pgfplots/#1 coord trafo}{%
            \pgfplotslibdateplothour:minutetofloat##1.
        }
        \pgfkeysdef{/pgfplots/#1 coord inv trafo}{
            \pgfplotslibdateplofloattothour:minute##1:
        }
    }
}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
plot coordinates/math parser=false,
time coordinates in=x,
xticklabel={\hour:\minute},
]
\addplot coordinates {
(10:00, 0)
(10:30, 25)
(10:40, 28)
(11:00, 40)
(11:15, 42)
(11:30, 50)
};
\end{axis}
\end{tikzpicture}

\end{document}

结果:

在此处输入图片描述

相关内容