带有月份名称的Gnuplot X轴

带有月份名称的Gnuplot X轴,gnuplot,Gnuplot,我有一个数据文件,其中浮点时间列从零增加到某个大值。每个时间点都与一个数据点相关联 时间点也恰好对应于月份,例如0=1月,1=2月,…,11=12月,12=1月,13=2月,… 我希望绘制这些数据,以便在X轴上看到月份名称,而不是0-* 有办法做到这一点吗 如果有帮助,我还可以在数据中预生成月份名称 下面是包含可能有用的月份名称的示例数据 #Time Month Data 0.01 Jan 0 0.055 Jan 0 0.2575 Jan 0 1.1687 Feb 0 1.9889 Feb

我有一个数据文件,其中浮点时间列从零增加到某个大值。每个时间点都与一个数据点相关联

时间点也恰好对应于月份,例如
0=1月,1=2月,…,11=12月,12=1月,13=2月,…

我希望绘制这些数据,以便在X轴上看到月份名称,而不是
0-*

有办法做到这一点吗

如果有帮助,我还可以在数据中预生成月份名称

下面是包含可能有用的月份名称的示例数据

#Time Month Data 0.01 Jan 0 0.055 Jan 0 0.2575 Jan 0 1.1687 Feb 0 1.9889 Feb 0 3.1037 Apr 0.00065915 3.2427 Apr 0.0035198 4.0656 May 0.03785 4.2134 May 0.041977 5.0032 Jun 0.049293 6.024 Jul 0.080957 7.0317 Aug 0.34284 7.9847 Aug 0.80902 8.0081 Sep 0.8149 8.9749 Sep 0.94009 9.0316 Oct 0.94389 9.9893 Oct 0.97967 10.058 Nov 0.97967 10.295 Nov 0.97967 11.125 Dec 0.97967 13.151 Feb 0.97967 13.696 Feb 0.97967 14.124 Mar 0.9797 15.119 Apr 0.97733 #时间月数据 0.01一月0日 0.055一月0日 0.2575一月0日 1.1687年2月0日 1.9889年2月0日 3.1037年4月0.00065915日 1998年4月0日3.2427 4.0656 5月0.03785日 4.2134 1977年5月0日 5.0032六月0.049293 6.024七月0.080957 7.0317八月0.34284 7.9847八月0.80902 2008年9月8日8149 2009年9月0日8.9749 9.0316 10月0.94389 9.9893年10月0.97967 1997年11月0日10.058 1997年11月0日10.295 11.125年12月0日97967 13.151年2月0日97967 13.696年2月0日97967 1997年3月0日14.124 97733年4月15日,119
我的第一个想法是尝试使用
timemt
,但不幸的是,这不起作用,因为所有月份的长度都不相同,所以这里实际上没有线性刻度。我认为您真正能做的最好是手动指定TIC:

set xtics ("Jan" 0.5, "Feb" 1.5, "Mar" 2.5, ...)
这将调整tics,使其位于范围的中心。如果不希望这样,请使用整数值:

set xtics ("Jan" 0, "Feb" 1, "Mar" 2, ...)
当然,您可以使用gnuplot 4.6中引入的for-do循环使这一点更加灵活:

MONTHS="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
set xtics ( "Jan" 0.5 )  #first one can't have `add`.
do for [i=1:15] {
    which_month = word(MONTHS,i%12+1)
    pos = i+0.5
    set xtics add ( which_month pos )
}
plot 'test.dat' u 1:3
您甚至可以通过查看
stats\u max
stats
命令获得循环的上限(您可能会使用
N=int(stats\u max+1)
或类似的方法):

还有一种与gnuplot 4.4配合使用的速记符号:

MONTHS="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
set xtics ( "Jan" 0.5 )
set for [i=1:15] xtics add ( word(MONTHS,i%12+1) i+0.5 )
plot 'test.dat' u 1:3

我已经更新了我的答案——我认为它现在更有用了:)谢谢,@mgilson,这正是我所需要的。没问题。我看到你编辑了我的帖子。不同之处在于我希望您使用
stats
的方式,但是您所拥有的也应该是有效的(我实际上不需要太多地使用
stats
,因此我没有像gnuplot的大多数其他角落那样对它进行过深入研究)。
MONTHS="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
set xtics ( "Jan" 0.5 )
set for [i=1:15] xtics add ( word(MONTHS,i%12+1) i+0.5 )
plot 'test.dat' u 1:3