Gnuplot从不同的CSV列构造timefmt?
问题描述:
我有以下csv
文件,其中列分别代表hour
,minute
,view count
,分别为每天的每分钟完全1440个条目。我想用gnuplot
来绘制它。 (把HH:MM成一列是不可能的,由于MySQL只FULL GROUP BY)Gnuplot从不同的CSV列构造timefmt?
"0","0","71"
"0","1","55"
"0","2","56"
...
"23","57","66"
"23","58","70"
"23","59","75"
目前我使用下面的命令:
set datafile separator ","
set timefmt "%H,%M"
set xdata time
set xtics format "%H:%M" time font "/:normal,8" rotate by 45 offset -1,-1
时间格式不正确呈现,小时数被解释为分钟数,分钟数完全不显示。 我也试过set timefmt "\"%H\",\"%M\""
没有成功。
两个问题:
- 我如何解析小时:分钟并正确显示呢?
- 如果这个数据文件有更多的列,时间戳不在第一个,但在第n个,那么我该如何指定gnuplot来渲染它,类似
using 0:n
对于plot
?
答
利用这段时间格式字符串
set timefmt "%H:%M"
将这个功能的话:
plot 'data.dat' u (catdate($1,$2)):($3) w l
:
catdate(x,y)=sprintf("%d:%d",x,y)
然后绘制