Gnuplot 月抽搐,如何设置

Gnuplot 月抽搐,如何设置,gnuplot,Gnuplot,在GnuPlot中: 如何将xtics设置为每月1号 设置xtics对我来说不起作用,因为每个月的秒数不同 set xmtics对我不起作用,因为显示月份时没有年份,也没有显示年份属于哪个月份。在我看来,gnuplot处理时间的能力出奇地好。我假设您的数据采用以下(或类似)格式: 我用了一年半的随机数来测试这一点 因此,首先您需要告诉gnuplot您的x坐标是时间,它是以什么格式编写的: set xdata time set timefmt "%m/%d/%y" 从现在起,gnuplot希望所

在GnuPlot中:

如何将xtics设置为每月1号

设置xtics对我来说不起作用,因为每个月的秒数不同


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

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

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

因此,首先您需要告诉gnuplot您的x坐标是时间,它是以什么格式编写的:

set xdata time
set timefmt "%m/%d/%y"
从现在起,gnuplot希望所有范围都采用指定的格式,包括
xtics
xrange
命令。唯一的例外是
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日”等。 在此之后,
绘制数据。哦,当在x轴上使用时间时,gnuplot需要在
plot
命令中使用
,因此即使使用了一个简单的数据文件,我也必须使用

plot 'data.txt' using 1:2
我使用gnuplot版本4.6 patchlevel 0并输出到postscript终端。
如果您对您的版本或终端有不同的体验,请在评论中告诉我。

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设置为月数的倍数,则只需在
设置xtics
行中添加一个乘数,例如获得季度分数:

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

我发现,如果我假设一个月的天数为30或31天,那么在图表中的某个点上,一些月份将缺少其XTIC。

我希望自己能找到解决方案;根据我的经验,当数据为时间时,gnuplot在格式化x数据方面非常弱。请注意,在输入时间MTT与输出/打印时间格式不同的情况下,xtics字符串采用的是时间MTT/xrange(输入)格式,而不是输出/打印格式。设置时间“%Y-%m-%d.%H%m%S”;设置X范围[“2019-06-13.000000”:“2019-06-14.000000”];设置xtics“2019-06-13.000000”,10800,“2019-06-14.000000”;设置格式x“%m/%d\n%Hh”
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
set xtics "2016-01", 3*2629746, "2016-12"