【问题标题】:Gnuplot X-Axis with Month Names带有月份名称的 Gnuplot X 轴
【发布时间】:2013-02-13 04:50:55
【问题描述】:

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

时间点也恰好对应于月份,例如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

【问题讨论】:

  • 我已经更新了我的答案——我认为它现在更有用了:)
  • 谢谢@mgilson,这正是我所需要的。
  • 没问题。我看到你编辑了我的帖子。不同之处在于我期望你如何使用stats,但你所拥有的应该也可以工作(我实际上不需要使用stats,所以我没有像大多数人那样探索它gnuplot 的其他角落)。

标签: gnuplot


【解决方案1】:

我的第一个想法是尝试偷偷摸摸地使用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_maxstats 命令获得循环的上限——(您可能会使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2017-09-09
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2020-01-07
    相关资源
    最近更新 更多