月tics,如何设置

时间:2012-12-09 08:28:16

标签: gnuplot

在GnuPlot中:

如何将xtics设置为每月1日?

设置xtics对我来说不起作用,因为每月的秒数变化。

set xmtics
对我不起作用,因为几个月没有显示多年,也没有显示哪一年属于一个月。

2 个答案:

答案 0 :(得分:20)

在我看来,gnuplot处理时间非常好。我假设您的数据采用以下(或类似)格式:

05/17/12    0.8188064359
05/18/12    0.97297057
05/21/12    0.9012782504

我用了一年半的随机数来测试这个。

首先你需要告诉gnuplot你的x坐标是时间,它的格式是什么:

set xdata time
set timefmt "%m/%d/%y"

从现在开始,gnuplot期望指定格式的所有范围,包括xticsxrange命令。唯一的例外是xtics中的增量,应该以秒为单位。

set xrange ["05/01/12":"08/01/13"]
set xtics "01/01/12",2592000,"08/01/18"

现在您可能会争辩说,每个月的秒数相差一整天(实际上是2月份的2天)。然而,gnuplot的作者似乎也在考虑这个问题,他们根据自己的喜好解决了这个问题。换句话说,上面将确保每个月1日的抽搐。在这里,我只建议指定xtics

的打印格式
set format x "%d %b %Y"

将导致“2012年5月1日”等 在此之后,plot您的数据。哦,当在x轴上使用时间时,gnuplot在using命令中需要plot,所以即使我有一个简单的数据文件,我也必须使用

plot 'data.txt' using 1:2

我使用了gnuplot版本4.6 patchlevel 0并输出到postscript终端。 如果您对自己的版本或终端有不同的体验,请在评论中告诉我们。

答案 1 :(得分:2)

如果您将秒数设置为一个月内的平均秒数,

set xtics将正常工作。

我假设平均年份为365.2425天,除以12以找出每月平均天数(约30.4),乘以每小时数,然后乘以每小时秒数,即:

365.2425 / 12 * 24 * 3600 = 2629746

假设您的数据格式为年 - 月和值,即:

2016-01 10000
2016-02 12000
2016-03 10500

然后你需要以下命令:

set xdata time
set timefmt "%Y-%m"
set format x "%b/%y" # Or some other output format you prefer
set xtics "2016-01", 2629746, "2016-03"
plot "mydata.dat" using 1:2 with linespoints

如果你想将xtics设置为几个月的倍数,那么只需在set xtics行中添加一个乘数,例如获得季度标记:

set xtics "2016-01", 3*2629746, "2016-12"

我发现,如果我假设一个月内的天数为30或31,那么在图表的某个时刻会有一些天数,那么几个月就会错过它们的xtics。