在 GnuPlot 中:
如何将 xtics 设置为每个月的第一天?
set xtics 对我不起作用,因为每月的秒数会有所不同。
设置 xmtics对我不起作用,因为月份显示没有年份,并且没有显示月份属于哪一年。
在 GnuPlot 中:
如何将 xtics 设置为每个月的第一天?
set xtics 对我不起作用,因为每月的秒数会有所不同。
设置 xmtics对我不起作用,因为月份显示没有年份,并且没有显示月份属于哪一年。
在我看来,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 需要指定格式的所有范围,包括xtics
andxrange
命令。唯一的例外是增量xtics
应该以秒为单位。
set xrange ["05/01/12":"08/01/13"]
set xtics "01/01/12",2592000,"08/01/18"
现在您可能会争辩说,每个月的秒数相差一整天(实际上是 2 月的 2 天)。然而,gnuplot 作者似乎也考虑到了这一点,他们按照我们的喜好解决了这个问题。换句话说,以上将确保每个月的第一天抽动一次。在这里,我只能建议指定打印格式xtics
set format x "%d %b %Y"
这将导致“2012 年 5 月 1 日”等。在此之后,plot
您的数据。哦,当在 x 轴上使用时间时,命令中需要 gnuplot using
,plot
所以即使我有一个微不足道的数据文件,我也必须使用
plot 'data.txt' using 1:2
我使用了 gnuplot 4.6 补丁级别 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,那么只需在该set xtics
行中添加一个乘数,例如获得季度分数:
set xtics "2016-01", 3*2629746, "2016-12"
我发现,如果我假设一个月中的天数是 30 或 31 天,那么在图表中的某个时间点,几个月会丢失它们的 xtics。