使用 pgfplots 绘制时间序列时将大量秒数转换为 HH:MM:SS

使用 pgfplots 绘制时间序列时将大量秒数转换为 HH:MM:SS

我的目标是使用 LaTeX 中的 pgfplots(pdfLaTeX、Mac 上的 TexLive)绘制时间序列(实验数据)。我使用的数据用分号分隔(按列),并具有以下结构:

-- some additional information here --

time;val1;val2;val3
sec;unit1;unit2;unit3
0.0000;1.0000;5.0000;560.0000
1.0000;7.0000;14.0000;845.0000
2.0000;5.0000;28.0000;874.0000
3.0000;9.0000;30.0000;125.0000
4.0000;12.0000;4.0000;359.0000
5.0000;25.0000;17.0000;254.0000
-- further data --
10630.0000;13.0000;27.0000;679.0000

如您所见,我的时间戳是自实验开始以来经过的秒数。由于它们花费了一些时间,因此简单地使用秒作为轴标签是不方便的。此外,我必须将经过的时间从秒转换为相应的小时、分钟和秒(HH:MM:SS)。

我的第一个计划是使用 Gnuplot 并使用“%s”作为 timefmt 导入数据文件,以转换为 HH:MM:SS。这意味着每个实验都将从 1970-01-01 00:00:00 开始,这不是问题,因为它们不会超过一天,所以经过的时间只是定义实验开始的问题。然而,我对 Gnuplot 得到的视觉结果并不满意。

使用 pgfplots 时,自定义绘图图的布局和设计变得更加容易。手册中有几个绘制时间序列的示例,但与我的情况不同,它们仅使用少量的“经过秒数”,因此没有必要使用 HH:MM:SS 作为时间格式。因此,我正在寻找一种使用 pgfplots 绘制数据的便捷方法,尤其是将时间戳转换为所需的格式。

那么有没有办法用 pgfplots 绘制时间序列并将经过的秒数直接转换为 HH:MM:SS(无需用 perl、python 或 awk 转换时间戳)?

任何提示都将不胜感激。

- - 编辑 - -

我被要求发表一篇 MWE。内容如下:

mwe.tex:

\documentclass{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.6}

\begin{document}
    \begin{tikzpicture}
        \begin{axis}[width=\textwidth, height=0.6\textwidth, no markers, xlabel = time, ylabel = values]
            \addplot table[col sep = semicolon, x = time, y = val1] {mwe.dat};
        \end{axis}
    \end{tikzpicture}
\end{document}

mwe.dat:

time;val1;val2;val3;val4;val5;val6;val7
0.0000;988.9041;386.0514;60.9407;999.7958;0.0000;0.0000
1.0000;989.7011;386.0415;60.9728;976.1486;0.0000;0.0000
2.0000;990.0765;385.9371;60.9987;952.5087;0.0000;0.0000
3.0000;990.4712;385.8035;61.0285;928.8734;0.0000;0.0000
4.0000;990.9448;385.5937;61.0698;905.2437;0.0000;0.0000
5.0000;990.6617;385.4375;61.0748;881.6223;0.0000;0.0000
6.0000;989.9383;385.3135;61.0587;858.0044;0.0000;0.0000
7.0000;988.5733;385.1901;61.0135;833.6808;0.0000;0.0000
8.0000;987.3644;385.0865;60.9733;806.8475;0.0000;0.0000
9.0000;986.4483;385.0294;60.9415;780.0141;0.0000;0.0000
10.0000;986.0016;385.0210;60.9238;753.1808;0.0000;0.0000
11.0000;985.8277;385.0401;60.9147;726.3475;0.0000;0.0000
12.0000;984.4391;385.1332;60.8492;723.1921;0.0000;0.0000
13.0000;983.3045;385.2164;60.7955;728.9315;0.0000;0.0000
14.0000;982.8382;385.2735;60.7722;734.7187;0.0000;0.0000
15.0000;982.9965;385.3436;60.7717;740.5941;0.0000;0.0000
16.0000;983.4755;385.4198;60.7830;746.5047;0.0000;0.0000
17.0000;984.9704;385.6830;60.8148;752.4778;0.0000;0.0000
18.0000;986.2632;385.9315;60.8405;758.4951;0.0000;0.0000
19.0000;987.0770;386.1411;60.8520;764.5697;0.0000;0.0000
20.0000;987.3939;386.3976;60.8385;770.7164;0.0000;0.0000
21.0000;987.4412;386.6834;60.8108;776.8907;0.0000;0.0000
22.0000;987.9269;387.0912;60.7888;783.1180;0.0000;0.0000
23.0000;988.1399;387.3974;60.7663;789.3953;0.0000;0.0000
24.0000;987.8219;387.4927;60.7442;795.7339;0.0000;0.0000
25.0000;988.0637;386.9380;60.8090;802.1863;0.0000;0.0000
26.0000;988.5963;386.0614;60.9175;808.6687;0.0000;0.0000
27.0000;987.6652;385.7920;60.9090;815.1513;0.0000;0.0000
28.0000;986.6169;385.6135;60.8860;821.6718;0.0000;0.0000
29.0000;985.3884;385.5848;60.8385;828.2465;0.0000;0.0000
30.0000;985.4399;385.5550;60.8437;834.8711;0.0000;0.0000
31.0000;986.2023;385.5266;60.8778;841.5231;0.0000;0.0000
32.0000;986.9324;385.4412;60.9145;848.2865;0.0000;0.0000
33.0000;987.5075;385.3449;60.9463;855.0678;0.0000;0.0000
34.0000;987.7267;385.2306;60.9663;861.8730;0.0000;0.0000
35.0000;987.6674;385.1904;60.9675;886.9654;0.0000;0.0000
36.0000;987.4361;385.1904;60.9575;916.8582;0.0000;0.0000
37.0000;987.4476;385.3017;60.9467;947.5736;0.0000;0.0000
38.0000;987.5697;385.4517;60.9363;978.3246;0.0000;0.0000
39.0000;987.9338;385.6803;60.9278;1009.1204;0.0000;0.0000
40.0000;987.7699;385.9028;60.9005;1039.9814;0.0000;0.0000
41.0000;987.2990;386.1220;60.8622;1070.8631;0.0000;0.0000
42.0000;988.3801;386.4268;60.8735;1101.7662;0.0000;0.0000
43.0000;989.3858;386.7080;60.8840;1132.7088;0.0000;0.0000
44.0000;990.1323;386.9273;60.8908;1163.7107;0.0000;0.0000
45.0000;990.7607;387.1280;60.8950;1194.7748;0.0000;0.0000
46.0000;991.3162;387.3188;60.8977;1225.8631;0.0000;0.0000
47.0000;991.1619;387.5554;60.8675;1256.9812;0.0000;0.0000
48.0000;990.6974;387.7468;60.8295;1288.1291;0.0000;0.0000
49.0000;989.6294;387.8324;60.7783;1319.3191;0.0000;0.0000
50.0000;988.8349;387.9233;60.7372;1350.5206;0.0000;0.0000
51.0000;988.1823;388.0189;60.7010;1381.7315;0.0000;0.0000
52.0000;988.3326;387.9931;60.7097;1412.9950;0.0000;0.0000
53.0000;988.5325;387.9609;60.7210;1444.2736;0.0000;0.0000
54.0000;988.8032;387.9228;60.7355;1475.5712;0.0000;0.0000
55.0000;988.9989;387.9708;60.7383;1506.9010;0.0000;0.0000
56.0000;989.1569;388.0661;60.7350;1538.2455;0.0000;0.0000
57.0000;989.0603;387.4017;60.7977;1569.6309;0.0000;0.0000
58.0000;988.9272;386.1502;60.9180;1601.0924;0.0000;0.0000
59.0000;988.7421;383.7395;61.1525;1632.6452;0.0000;0.0000
60.0000;988.4541;380.8603;61.4303;1664.2852;0.0000;0.0000

不幸的是,我意识到无法开箱即用地绘制这 10,000 个数据点,因为 LaTeX 内存太小。
因此,我将切换回 gnuplot 并使用 tikz 的独立终端功能。但是,在再次阅读 pgfplots 手册后,似乎 pgfplots 无法将秒转换为 HH:MM:SS。此外,根据手册,pgfplots 需要 YYYY-MM-DD HH:MM 中的时间戳,并且秒始终为零。

您知道如何将 pgfplots 和 gnuplot 自定义图表布局的巨大优势结合起来吗?

相关内容