我在其中一个浮点时间列从零增加到一些较大的值的数据文件。 每个时间点与数据点相关联。
该时间点也正好对应个月,使得0=Jan, 1=Feb, ..., 11=Dec, 12=Jan, 13=Feb, ...
我想绘制该数据,我看到在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
我首先想到的是尝试一些偷偷摸摸与timefmt
,但不幸的是,这并不工作,因为所有的月份是不一样的长度,所以你实际上并没有线性刻度在这里。 我想,你真的可以做的最好的是手动指定抽动:
set xtics ("Jan" 0.5, "Feb" 1.5, "Mar" 2.5, ...)
这种调整抽动,使它们的范围为中心。 如果你不希望出现这种情况,则用整数值代替:
set xtics ("Jan" 0, "Feb" 1, "Mar" 2, ...)
当然,你可以使用为做这是在gnuplot的4.6引入了循环使之成为一个更灵活一点:
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
命令看STATS_max
- (你可能会使用N = int(STATS_max+1)
或类似的东西):
stats 'test.dat' u 1 nooutput #Runs stats on the file, generates STATS_max
还有与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