gnuplot 5中的时间/日期处理

gnuplot 5中的时间/日期处理,gnuplot,Gnuplot,我有以下数据集 0 22/01 5:40.416 07/01 5:59.149 1 29/01 5:49.765 14/01 5:59.036 2 05/02 5:45.675 21/01 5:52.160 3 12/02 5:44.241 28/01 5:55.160 4 19/02 5:49.330 04/02 5:44.065 5 26/02 5:48.044 11/02 5:34.

我有以下数据集

0   22/01   5:40.416    07/01   5:59.149
1   29/01   5:49.765    14/01   5:59.036
2   05/02   5:45.675    21/01   5:52.160
3   12/02   5:44.241    28/01   5:55.160
4   19/02   5:49.330    04/02   5:44.065
5   26/02   5:48.044    11/02   5:34.803
我想把第3列画成2的函数(也把第5列画成4的函数,但这不是问题所在)。格式为天/月和分钟:seconds.xxx

在gnuplot 4.6中,通过为x和y设置不同的时间格式来指示如何读取这两个列有些简单。有效的最低脚本是:

set xdata time
set timefmt x "%d/%m"
set format x "%b"

set ydata time
set timefmt y "%M:%S"
set format y "%M:%S"

plot 'data.dat' using 2:3
我最近升级到gnuplot 5,命令
set timemt x“%d/%m”
(及其
y
等效项)现在给出了一个错误。似乎您不能再放置
x
y
,您只能对整个脚本使用单个
timemt

国家

使用时间格式生成轴刻度标签现在由
设置{xy}时间
而不是通过
设置{xy}数据时间
。如此优先 调用
set xdata time
set timemt x
对于 输入或输出。这些较旧的命令仍然可以工作,但不可用 不赞成

我有两个问题。首先,尽管有“较旧的命令仍然有效”的指示,但我在
set timefmt x“%d/%m”
上得到了一个错误。其次,也是最重要的一点,我不知道如何教gnuplot如何使用新命令读取x和y列


注意:我已经看过2011年的版本,但我觉得它并不优雅,我想保留当前格式的文件。

他们对这个新版本的改进实际上使它更加灵活。您可以为每个特定的时间列指定一种格式,而不是指定默认的时间格式,然后要求列符合该格式。这样,只要指定每列的格式,就不必保持一致。也可以对多个x轴或y轴使用时间格式

您引用的发行说明中提到了您问题的解决方案,但没有很好地解释。使用
timecolumn(N,“timeformat”)
函数,如下所示:

set xtics time
set format x "%b"

set ytics time
set format y "%M:%S"

plot 'data.dat' using (timecolumn(2, "%d/%m")):(timecolumn(3, "%M:%S"))
set-timemt
行已替换为这个新的两个参数
timefunction()
,它允许您使用子句为
中的每一列指定格式。请注意
时间列()周围的
()
。这意味着你可以(如果你愿意的话)用时间值做一些数学运算。根据同样的规定:

时间坐标在内部存储为相对于标准unix epoch 1-Jan-1970的秒数。早期版本的gnuplot在内部使用了不同的纪元(2000年1月1日)。此更改解决了外部生成以秒为单位的时间时引入的不一致性。特定gnuplot安装使用的历元约定可以使用命令
print strftime(“%F”,0)
确定。现在,时间的存储精度至少为毫秒

请注意对
设置xtics时间的更改。xtics的输出格式与示例中相同,并且与
timecolumn()
的第二个参数给出的输入格式不同。您似乎比以前有了更多的灵活性,但语法发生了变化