1

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

时间点也恰好对应于月份,这样0=Jan, 1=Feb, ..., 11=Dec, 12=Jan, 13=Feb, ...

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

有没有办法做到这一点?

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

示例数据,包括可能有用的月份名称,如下。

#Time 月份数据
0.01 一月 0
0.055 一月 0
0.2575 一月 0
1.1687 二月 0
1.9889 二月 0
3.1037 四月 0.00065915
3.2427 四月 0.0035198
4.0656 五月 0.03785
4.2134 五月 0.041977
5.0032 六月 0.049293
6.024 七月 0.080957
7.0317 八月 0.34284
7.9847 八月 0.80902
8.0081 九月 0.8149
8.9749 九月 0.94009
9.0316 十月 0.94389
9.9893 十月 0.97967
10.058 十一月 0.97967
10.295 十一月 0.97967
11.125 十二月 0.97967
13.151 二月 0.97967
13.696 二月 0.97967
14.124 三月 0.9797
15.119 四月 0.97733
4

1 回答 1

3

我的第一个想法是尝试一些偷偷摸摸的东西timefmt,但不幸的是,这不起作用,因为所有月份的长度都不一样,所以这里实际上没有线性比例。我认为你能做的最好的事情就是手动指定抽动:

set xtics ("Jan" 0.5, "Feb" 1.5, "Mar" 2.5, ...)

这会调整抽动,使它们位于范围的中心。如果您不希望这样,请改用整数值:

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您甚至可以通过查看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
于 2013-02-13T06:06:35.637 回答