Gnuplot 条件绘图:关于日期的 stringcolumn() 函数
Gnuplot conditional plotting: stringcolumn() function regarding dates
我有以下数据(例子):
#Time Data
07/22/2013 6286
07/22/2013 10695
07/22/2013 17868
07/22/2013 18880
07/22/2013 19206
07/22/2013 20365
07/22/2013 18459
07/11/2013 3420
07/11/2013 3256
我想在 x 轴上绘制日期,在 y 轴上绘制第二列。
在这种情况下,它应该只绘制日期等于“07/22/2013”的行。
这是我尝试过的:
set datafile separator " "
set xdata time
set timefmt "%m/%d/%Y"
set xrange ["07/21/2013" : "07/23/2013"]
set yrange [3000:21000]
set format x "%m/%d"
plot "test_date.txt" using (stringcolumn(1) eq "07/22/2013"? :1/0):2 w p title "spots" lc 7
因此,Gnuplot 尝试绘制 digram 但未设置数据点(见下图 "Result")
Result
有人知道这是为什么吗?我应该使用 "timecolumn()" 而不是 "stringcolumn()" 吗?如果是这样,我该怎么做?
如有任何提示,我将不胜感激。
我想问题是 </code> 试图提取一个数字,但只会找到 <code>07
。如果您按下终端上的自动缩放按钮 window,您会看到有一些数据,但不是您期望的 "00:07"
。
一个快速解决方法是将 </code> 替换为 <code>timecolumn(1)
。
根据 Ethan set xdata time
是早期 gnuplot 版本的遗留物(但它仍然有效)。我会这样做:
代码:
### time data plot with ternary filter
reset session
$Data <<EOD
#Time Data
07/22/2013 6286
07/22/2013 10695
07/22/2013 17868
07/22/2013 18880
07/22/2013 19206
07/22/2013 20365
07/22/2013 18459
07/11/2013 3420
07/11/2013 3256
EOD
myTimeFmt = "%m/%d/%Y"
set xrange[strptime(myTimeFmt,"07/21/2013"):strptime(myTimeFmt,"07/23/2013")]
set yrange [3000:21000]
set format x "%m/%d" time
plot $Data u (strcol(1) eq "07/22/2013" ? timecolumn(1,myTimeFmt):NaN):2 w p title "spots" lc 7
### end of code
结果:
我有以下数据(例子):
#Time Data
07/22/2013 6286
07/22/2013 10695
07/22/2013 17868
07/22/2013 18880
07/22/2013 19206
07/22/2013 20365
07/22/2013 18459
07/11/2013 3420
07/11/2013 3256
我想在 x 轴上绘制日期,在 y 轴上绘制第二列。
在这种情况下,它应该只绘制日期等于“07/22/2013”的行。
这是我尝试过的:
set datafile separator " "
set xdata time
set timefmt "%m/%d/%Y"
set xrange ["07/21/2013" : "07/23/2013"]
set yrange [3000:21000]
set format x "%m/%d"
plot "test_date.txt" using (stringcolumn(1) eq "07/22/2013"? :1/0):2 w p title "spots" lc 7
因此,Gnuplot 尝试绘制 digram 但未设置数据点(见下图 "Result")
Result
有人知道这是为什么吗?我应该使用 "timecolumn()" 而不是 "stringcolumn()" 吗?如果是这样,我该怎么做?
如有任何提示,我将不胜感激。
我想问题是 </code> 试图提取一个数字,但只会找到 <code>07
。如果您按下终端上的自动缩放按钮 window,您会看到有一些数据,但不是您期望的 "00:07"
。
一个快速解决方法是将 </code> 替换为 <code>timecolumn(1)
。
根据 Ethan set xdata time
是早期 gnuplot 版本的遗留物(但它仍然有效)。我会这样做:
代码:
### time data plot with ternary filter
reset session
$Data <<EOD
#Time Data
07/22/2013 6286
07/22/2013 10695
07/22/2013 17868
07/22/2013 18880
07/22/2013 19206
07/22/2013 20365
07/22/2013 18459
07/11/2013 3420
07/11/2013 3256
EOD
myTimeFmt = "%m/%d/%Y"
set xrange[strptime(myTimeFmt,"07/21/2013"):strptime(myTimeFmt,"07/23/2013")]
set yrange [3000:21000]
set format x "%m/%d" time
plot $Data u (strcol(1) eq "07/22/2013" ? timecolumn(1,myTimeFmt):NaN):2 w p title "spots" lc 7
### end of code
结果: