gnuplot - 读取双引号日期时间戳
gnuplot - Read Double Quoted datetime stamp
我正在尝试学习 gnuplot,我想绘制一些逗号分隔的数据。
- x 轴日期时间戳 - 用双引号引起来 - 包含逗号分隔符,
- y轴整数值数据。
"1/31/22, 4:36",0
"1/31/22, 16:30",1
"1/31/22, 16:39",2
"2/1/22, 16:44",3
"2/1/22, 9:25",4
"2/7/22, 13:59",5
"2/7/22, 8:57",6
"2/8/22, 11:03",7
"2/18/22, 15:50",8
"2/21/22, 11:11",9
"2/24/22, 9:11",10
如何读取这些数据并在 gnuplot 中绘图?
我尝试了以下但收到有关“警告:跳过没有有效点的数据文件”的错误
set xdata time
set timefmt "\"%m/%d/%Y, %H:%M\""
set format x “%d/%m/%Y”
set datafile separator ","
plot "file.txt" using 1:2 with linespoints
我假设我的 timefmt 不正确。正确的语法是什么?
gnuplot 还可以使用以下格式处理日期时间戳 AM/PM?
"1/31/22, 4:36 AM",0
"1/31/22, 4:30 PM",1
勾选help time_specifiers
。你的年份是 2 位数 %y
而不是 4 位数 %Y
。
双引号将使您的 date/time 成为第一列。格式中不需要额外的双引号。
使用 set xdata time
和 set timefmt "..."
语法,绘图命令中只有一种格式。
如果您使用语法 timecolumn()
(检查 help timecolumn
),您可以在绘图命令中使用不同的输入时间格式。
注:格式%p
作为输入格式已经在gnuplot 5.4.0中引入
对于旧版本,您必须使用解决方法,请参见例如
代码:
### plot timedata in double quotes and AM/PM format
reset session
$Data1 <<EOD
"1/31/22, 4:36",0
"1/31/22, 16:30",1
"1/31/22, 16:39",2
"2/1/22, 16:44",3
"2/1/22, 9:25",4
"2/7/22, 13:59",5
"2/7/22, 8:57",6
"2/8/22, 11:03",7
"2/18/22, 15:50",8
"2/21/22, 11:11",9
"2/24/22, 9:11",10
EOD
$Data2 <<EOD
"1/31/22, 4:36 AM",0
"1/31/22, 4:30 PM",1
"1/31/22, 4:39 PM",2
"2/1/22, 4:44 PM",3
"2/1/22, 9:25 AM",4
"2/7/22, 1:59 PM",5
"2/7/22, 8:57 AM",6
"2/8/22, 11:03 AM",7
"2/18/22, 3:50 PM",8
"2/21/22, 11:11 AM",9
"2/24/22, 9:11 AM",10
EOD
set datafile separator comma
myTimeFmt1 = "%m/%d/%y, %H:%M"
myTimeFmt2 = "%m/%d/%y, %H:%M %p"
set format x "%d/%m/%Y" time
plot $Data1 u (timecolumn(1,myTimeFmt1)):2 w lp pt 7 ps 2 lc "grey" lw 4 ti "Data1", \
$Data2 u (timecolumn(1,myTimeFmt2)):2 w lp pt 7 ps 1 lc "red" lw 1 ti "Data2"
### end of code
结果:
我正在尝试学习 gnuplot,我想绘制一些逗号分隔的数据。
- x 轴日期时间戳 - 用双引号引起来 - 包含逗号分隔符,
- y轴整数值数据。
"1/31/22, 4:36",0
"1/31/22, 16:30",1
"1/31/22, 16:39",2
"2/1/22, 16:44",3
"2/1/22, 9:25",4
"2/7/22, 13:59",5
"2/7/22, 8:57",6
"2/8/22, 11:03",7
"2/18/22, 15:50",8
"2/21/22, 11:11",9
"2/24/22, 9:11",10
如何读取这些数据并在 gnuplot 中绘图?
我尝试了以下但收到有关“警告:跳过没有有效点的数据文件”的错误
set xdata time
set timefmt "\"%m/%d/%Y, %H:%M\""
set format x “%d/%m/%Y”
set datafile separator ","
plot "file.txt" using 1:2 with linespoints
我假设我的 timefmt 不正确。正确的语法是什么?
gnuplot 还可以使用以下格式处理日期时间戳 AM/PM?
"1/31/22, 4:36 AM",0
"1/31/22, 4:30 PM",1
勾选help time_specifiers
。你的年份是 2 位数 %y
而不是 4 位数 %Y
。
双引号将使您的 date/time 成为第一列。格式中不需要额外的双引号。
使用 set xdata time
和 set timefmt "..."
语法,绘图命令中只有一种格式。
如果您使用语法 timecolumn()
(检查 help timecolumn
),您可以在绘图命令中使用不同的输入时间格式。
注:格式%p
作为输入格式已经在gnuplot 5.4.0中引入
对于旧版本,您必须使用解决方法,请参见例如
代码:
### plot timedata in double quotes and AM/PM format
reset session
$Data1 <<EOD
"1/31/22, 4:36",0
"1/31/22, 16:30",1
"1/31/22, 16:39",2
"2/1/22, 16:44",3
"2/1/22, 9:25",4
"2/7/22, 13:59",5
"2/7/22, 8:57",6
"2/8/22, 11:03",7
"2/18/22, 15:50",8
"2/21/22, 11:11",9
"2/24/22, 9:11",10
EOD
$Data2 <<EOD
"1/31/22, 4:36 AM",0
"1/31/22, 4:30 PM",1
"1/31/22, 4:39 PM",2
"2/1/22, 4:44 PM",3
"2/1/22, 9:25 AM",4
"2/7/22, 1:59 PM",5
"2/7/22, 8:57 AM",6
"2/8/22, 11:03 AM",7
"2/18/22, 3:50 PM",8
"2/21/22, 11:11 AM",9
"2/24/22, 9:11 AM",10
EOD
set datafile separator comma
myTimeFmt1 = "%m/%d/%y, %H:%M"
myTimeFmt2 = "%m/%d/%y, %H:%M %p"
set format x "%d/%m/%Y" time
plot $Data1 u (timecolumn(1,myTimeFmt1)):2 w lp pt 7 ps 2 lc "grey" lw 4 ti "Data1", \
$Data2 u (timecolumn(1,myTimeFmt2)):2 w lp pt 7 ps 1 lc "red" lw 1 ti "Data2"
### end of code
结果: