我的数据格式如下:
2014-11-17 19 18
2014-11-18 8 20
2014-11-19 23 16
2014-11-20 28 20
等等。
我的gnuplot脚本如下:
gnuplot -e "
set output 'commits-per-day-with.png';
set term png truecolor giant;
set xdata time;
set timefmt '%Y-%m-%d';
set format x '%Y-%m-%d';
set xrange ['$min_date':'$max_date'];
set xtics 7;
set grid y;
set boxwidth 1.0 relative;
set style fill transparent solid 0.5 noborder;
plot '$tmp_file' using 0:2 with boxes title 'authored',
'' using 0:3 with boxes title 'committed';
"
正如您所见,它已嵌入到shell脚本中。 $min_date
和$max_date
变量的格式如下:2014-01-01
,因此就像数据中的格式(实际上是从数据中检索到的)和指定的格式一样。
$tmp_file
是包含数据的文件。
gnuplot告诉我:
line 0: all points y value undefined!
我的错误是什么?
答案 0 :(得分:1)
问题是,如评论所示,第0列。
你告诉gnuplot在xaxis上绘制时间戳。在计算机上,时间戳由数字表示,通常计算自过去一点以来的秒数。在大多数情况下,这一点是1970-1-1 00:00:00,然而,在gnuplot中,它是2000-1-1。
第0列是一个特殊列,用于计算当前绘制的数据集的行数(即您的案例中的行号)。因此,数据的x值为1,2,3 ......
所以,你的x值是2000年的第一秒,但你在2014年指定了一个范围。难怪没有什么可以绘制的。
如上所述,情节using 1:
和gnuplot会正确解析第一列的时间戳。