繁体   English   中英

Gnuplot three.csv-files with different times in same timefmt 文件

[英]Gnuplot three .csv-files with different times in same timefmt

我在同一时间有 3.csv 文件,但时间不同,我想 plot 它们相互重叠。

这些文件是这样构建的:

NO.;Time;ms;" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";" V";"A1234567890";"A1234567890";"AO1234/WLAO12345"
1;2022-11-25 15:43:42;0;+3.344;-0.013;+0.002;+0.000;+0.000;+0.000;-0.001;+0.001;-0.001;+0.000;+0.002;+0.001;+0.000;+0.000;-0.001;+0.000;-0.001;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
2;2022-11-25 15:43:42;200;+3.344;-0.012;+0.002;+0.001;+0.001;+0.001;-0.001;+0.001;-0.001;+0.000;+0.002;+0.001;+0.000;+0.000;-0.001;+0.000;-0.001;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
3;2022-11-25 15:43:42;400;+3.345;-0.013;+0.003;+0.001;+0.000;+0.001;-0.001;+0.001;-0.001;+0.000;+0.001;+0.001;+0.001;+0.000;-0.001;+0.001;-0.001;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
4;2022-11-25 15:43:42;600;+3.344;-0.012;+0.002;+0.001;+0.000;+0.001;-0.001;+0.001;+0.000;+0.000;+0.002;+0.001;+0.001;+0.001;-0.001;+0.001;-0.001;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
5;2022-11-25 15:43:42;800;+3.344;-0.012;+0.002;+0.000;+0.000;+0.001;-0.001;+0.001;-0.001;+0.000;+0.002;+0.001;+0.000;+0.001;-0.001;+0.001;-0.001;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
6;2022-11-25 15:43:43;0;+3.344;-0.012;+0.002;+0.000;+0.000;+0.001;-0.001;+0.001;+0.000;+0.000;+0.001;+0.000;-0.001;+0.000;-0.001;+0.001;-0.001;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
7;2022-11-25 15:43:43;200;+3.344;-0.012;+0.002;+0.000;+0.000;+0.000;-0.001;+0.001;-0.001;-0.001;+0.001;+0.001;-0.001;-0.001;-0.002;+0.001;+0.000;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
8;2022-11-25 15:43:43;400;+3.344;-0.012;+0.002;+0.000;-0.001;+0.001;-0.002;+0.001;-0.001;-0.001;+0.001;+0.001;+0.000;-0.001;-0.001;+0.000;+0.000;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
9;2022-11-25 15:43:43;600;+3.345;-0.012;+0.002;+0.000;-0.001;+0.000;-0.002;+0.001;+0.000;-0.001;+0.001;+0.000;-0.001;-0.001;-0.001;+0.000;-0.001;-0.001;-0.001;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
10;2022-11-25 15:43:43;800;+3.344;-0.012;+0.002;+0.000;+0.000;+0.000;-0.001;+0.001;+0.000;+0.000;+0.001;+0.000;+0.000;-0.001;-0.001;+0.000;-0.001;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
11;2022-11-25 15:43:44;0;+3.344;-0.011;+0.002;+0.000;+0.000;+0.000;-0.001;+0.001;+0.000;-0.001;+0.002;+0.000;+0.000;+0.000;-0.001;+0.001;-0.001;+0.000;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
12;2022-11-25 15:43:44;200;+3.344;-0.011;+0.002;+0.000;-0.001;+0.000;-0.002;+0.001;-0.001;+0.000;+0.002;+0.001;-0.001;-0.001;-0.002;+0.000;-0.001;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
13;2022-11-25 15:43:44;400;+3.344;-0.011;+0.002;+0.000;-0.001;+0.000;-0.001;+0.001;-0.001;+0.000;+0.001;+0.001;+0.000;+0.000;-0.002;+0.000;-0.001;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
14;2022-11-25 15:43:44;600;+2.890;-0.011;+0.002;+0.000;-0.001;+0.000;-0.001;+0.001;+0.000;-0.001;+0.002;+0.001;+0.001;+0.001;-0.001;+0.001;-0.001;+0.000;+0.001;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
15;2022-11-25 15:43:44;800;+2.878;-0.012;+0.002;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;+0.000;+0.002;+0.000;+0.000;+0.001;-0.001;+0.001;-0.001;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
16;2022-11-25 15:43:45;0;+2.881;-0.013;+0.003;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;-0.001;+0.001;+0.000;+0.000;+0.000;-0.001;+0.001;-0.001;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
17;2022-11-25 15:43:45;200;+2.870;-0.013;+0.002;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;-0.001;+0.002;+0.000;+0.000;+0.001;-0.001;+0.001;+0.001;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
18;2022-11-25 15:43:45;400;+2.869;-0.012;+0.002;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;-0.001;+0.002;+0.000;+0.000;+0.000;-0.002;+0.001;+0.001;+0.000;+0.001;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
19;2022-11-25 15:43:45;600;+2.874;-0.012;+0.003;+0.000;-0.001;+0.001;-0.001;+0.001;+0.001;-0.001;+0.002;-0.001;+0.000;+0.000;-0.002;+0.001;-0.001;-0.001;+0.000;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
20;2022-11-25 15:43:45;800;+2.869;-0.011;+0.003;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;+0.000;+0.001;-0.001;+0.000;+0.000;-0.002;+0.001;-0.001;-0.001;+0.001;-0.002;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
21;2022-11-25 15:43:46;0;+2.869;-0.010;+0.002;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;-0.001;+0.002;+0.000;+0.000;+0.000;-0.001;+0.001;+0.000;-0.001;+0.001;-0.001;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
22;2022-11-25 15:43:46;200;+2.870;-0.010;+0.002;+0.001;-0.001;+0.001;-0.001;+0.001;+0.001;-0.001;+0.003;+0.001;+0.000;+0.001;-0.002;+0.001;-0.001;-0.001;+0.001;-0.002;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
23;2022-11-25 15:43:46;400;+2.873;-0.011;+0.003;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;-0.001;+0.001;+0.001;+0.000;+0.000;-0.002;+0.001;-0.001;-0.001;+0.001;-0.002;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
24;2022-11-25 15:43:46;600;+2.868;-0.011;+0.002;+0.001;-0.001;+0.001;-0.001;+0.001;+0.000;-0.001;+0.002;+0.000;+0.001;+0.001;-0.002;+0.001;-0.001;-0.001;+0.001;-0.002;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
25;2022-11-25 15:43:46;800;+2.870;-0.010;+0.002;+0.000;-0.001;+0.001;-0.001;+0.001;+0.000;-0.001;+0.002;+0.000;+0.000;+0.001;-0.001;+0.001;-0.001;-0.001;+0.001;-0.002;LLLLLLLLLL;LLLLLLLLLL;LLLLLLLLL
...

在这里我只需要第二和第四列。

我的代码看起来像:

set grid
set datafile separator ";"
set title 'xxx'
set title font ",12"
set ylabel 'U/V' font ",12"
set key box font ",12"
#myformat = "%Y-%m-%d %H:%M:%S"
#set key at strptime(myformat,"2022-11-24 18:02:55"), 3.005
set xtics time
set xlabel 'time' font ",12"
set yrange [2.4:3.6]
set ytics font ",10"
set y2tics font ",10"
set border 11
set border lw 2
set xtics font ",8"
set tics nomirror
set term wxt size 1200, 460
set xdata time
#set timefmt "%s"
#set timefmt "%Y-%m-%d %H:%M:%s"
#set timefmt "%tH:%tM:%tS"
#set format x "%M:%S" time
#set xrange ["2022-11-25 15:40:00":"2022-11-26 17:05:00"]
#set xrange ["17:20:00":"18:47:00"]
#set xrange 0:7000
#print strptime("%Y-%m-%d %H:%M:%S",s)
#myTimeFmt = "%Y-%m-%d %H:%M:%S"
#Normalize(c) = (t==0?(t0=timecolumn(c,myTimeFmt),t=1):NaN, timecolumn(c,myTimeFmt)-t0)

#plot t=0 'xxx.CSV' using (Normalize(2)):4 every ::43::6849 title "aaa" lt 7 lc 7 with lines, \
#'yyy.CSV' using (Normalize(2)):4 every ::43::6382 title "bbb" lt 7 lc 7 with lines, \
#'zzz.CSV' using (Normalize(2)):4 every ::43::5928 title "ccc" lt 7 lc 7 with lines

plot 'xxx.CSV' using (timecolumn(2, "%Y-%m-%d %H:%M:%S")):4 every ::43::6849 title "aaa" lt 7 lc 7 with lines, \
'yyy.CSV' using (timecolumn(2, "%Y-%m-%d %H:%M:%S")):4 every ::43::6382 title "bbb" lt 7 lc 7 with lines, \
'zzz.CSV' using (timecolumn(2, "%Y-%m-%d %H:%M:%S")):4 every ::43::5928 title "ccc" lt 7 lc 7 with lines

我尝试了很多不同的东西,但没有达到理想的效果。 有人知道我能做什么吗?

我扩展了 .csv 文件。 这是我的实际代码:

set grid
set title 'Entladung der Batterie nach verschiedenen Ladungen'
set tics nomirror
set title font ",12"
set ylabel 'U/V' font ",12"
set key box font ",12"
set xtics time
set xlabel 'time' font ",12"
set border 11
set border lw 2
set xtics font ",8"
set term wxt size 1200, 460
myFmt = "%Y-%m-%d %H:%M:%S"
set datafile separator ";"
set format x "%tH:%M:%S" #timedate
set yrange[2.5:3.6]

plot 'Entladen1C.CSV' u (t=timecolumn(2,myFmt), $0==0?t01=t:0, t-t01):4 every ::43::6849 lt 7 lc "red" with lines      ti "Entladung nach 1C Ladung", \
     'Entladen0.5C.CSV' u (t=timecolumn(2,myFmt), $0==0?t02=t:0, t-t02):4 every ::43::6382 lt 7 lc "web-green" with lines ti "Entladung nach 0,5C Ladung", \
     'Entladen0.2C.CSV' u (t=timecolumn(2,myFmt), $0==0?t03=t:0, t-t03):4 every ::43::5928 lt 7 lc "blue" with lines      ti "Entladung nach 0,2C Ladung"

使用此代码,我得到以下 plot:

此代码的输出

到现在为止看起来非常好。 但是当我现在放大时,我们可以看到,绿色图表上有 7 秒的偏移量。

飞涨

那是因为我在事件发生之前告诉我的测量设备进行记录。 所以我希望图形从 x=0 的 7 秒开始。 而是让时间重新从零开始。

您必须在相应数据集的第一次移动数据。 您可以通过将第一个条目(即当行索引$0==0存储到变量t01,t02,t03中并从数据集中的所有其他值中减去这些值)来执行此操作。

以下不使用set xdata time ,只是将数据绘制为秒,但在 x 轴上格式化为set format x "%tH:%M" timedate 实际上, %tH并不是 24 小时回绕。 检查help time_specifiers

编辑:

  • 考虑毫秒(此处:第 2 列)。 定义一个 function,它将第 2 列中的值的 1/1000 添加到时间。
  • 向其中一个数据集添加一个常量偏移(此处为 7 秒)。
  • 使用"%tM:%tS"进行时间格式化,特别是如果你想显示负时间。

脚本:

### shift time by starting time
reset session

$Data1 <<EOD
2022-11-25 15:43:00;  0;   1.0
2022-11-25 15:43:17;200;   2.0
2022-11-25 15:44:00;400;   3.0
EOD

$Data2 <<EOD
2022-10-09 23:59:07;  0;   4.0
2022-10-09 23:59:37;200;   3.0
2022-10-10 00:00:07;400;   1.0
2022-10-10 00:00:37;800;   2.0
EOD

$Data3 <<EOD
2022-09-30 08:22:00;  0;   3.0
2022-09-30 08:22:14;400;   4.0
2022-09-30 08:23:11;800;   2.0
EOD

myFmt = "%Y-%m-%d %H:%M:%S"
set datafile separator ";"
set format x "%tM:%tS" timedate
set xlabel "Minutes:Seconds"
set yrange[0:5]

myTime(col1,col2) = timecolumn(col1,myFmt)+column(col2)/1000
dt1 =  0
dt2 = -7
dt3 =  0

plot $Data1 u (t=myTime(1,2), $0==0?t01=t:0, t-t01+dt1):3 w lp pt 7 lc "red"       ti "Data1", \
     $Data2 u (t=myTime(1,2), $0==0?t02=t:0, t-t02+dt2):3 w lp pt 7 lc "web-green" ti "Data2", \
     $Data3 u (t=myTime(1,2), $0==0?t03=t:0, t-t03+dt3):3 w lp pt 7 lc "blue"      ti "Data3"
### end of script

结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM