配置gnuplot来处理像excel这样的时间序列

时间:2015-02-17 01:29:58

标签: linux excel math graph gnuplot

我试图用gnuplot来描绘事件。 Excel的默认行为会生成更易读的图形。

我希望我的gnuplot图表看起来像Excel。

set terminal png size 1200,800
set xdata time
set timefmt "%Y-%m-%d_%H-%M"
set output "graph.png"
set xrange ["2015-02-01_08-54":"2015-02-01_23-20"]
set yrange [0:70]
set grid
set xlabel "24-Hour"
set ylabel "Events"
set title "Events"
plot "events.dat" using 1:2 index 0 title "events" with filledcurves ls 1

我花了很多时间来操作源数据和plot.conf,但是我不清楚Excel在做什么不同。

Gnuplot输出:

gnuplot output

Excel输出:

Excel output

1 个答案:

答案 0 :(得分:1)

Excel绘制错误的x刻度:它忽略时间值,并将第一列中给出的值放在等距x值作为标签。

要使用gnuplot获得相同的行为,必须使用xticlabel将值作为tic标签放在第一列中,并使用行号(第0列)作为x值:

set xtics rotate by 90 right noenhanced
plot "events.dat" using 0:2:xticlabel(1) title "events" with filledcurves

现在,这会给你相当难以理解的标签,因为它太多了。通过一些调整,您可以获得更好的结果:

set terminal pngcairo size 1200,800
set output "graph.png"
set yrange [0:70]
set grid y
set xlabel "24-Hour"
set ylabel "Events"
set xtics out nomirror scale 0.5 rotate by 90 right font ',8' noenhanced
plot "events.dat" using 0:2:xticlabel(int($0) % 5 == 0 ? strcol(1) : '') title "events" with filledcurves

enter image description here

免责声明:请仅使用此脚本了解Excel的功能,而不是重现它,因为它会给您的事件发生的实际时间跨度带来非常错误的印象!