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

结果: