首页 > 解决方案 > 用 X 轴上的日期和 Y 轴上的时间绘制事件

问题描述

您可以为 X 设置一种方式,为 Y 设置另一种方式吗?我的数据看起来像:

2019-05-08 00:14:29.000
2019-05-08 00:14:27.000
2019-05-07 22:08:09.000
2019-05-07 22:08:08.000

我的代码如下所示:

## X axis
set xdata time
set timefmt "%Y-%m-%d"
set format x "%m:%d"
set xrange ["2019-01-01":"2019-10-30"]
set xlabel "Date (mm:dd)" font "Times, 12"

# Y axis
set ydata time
set timefmt "%H:%M:%S"
set format y "%H:%M"
set yrange ["00:00":"23:59"]
set ylabel "Time Of Day(hh:mm)" font "Times, 12"

plot "file.data" using 1:2 with points

我看到轴看起来正确,但没有数据。如果我删除第二个“set timefmt”,它会抱怨没有 Y 数据。

我没有看到使用 gnuplot 的示例。有什么建议么?我有数百个数据点和 50 多个数据文件。

标签: gnuplot

解决方案


我也经常对数据/时间格式感到困惑和困惑。我的怀疑是,如果您有两个时间轴,则先指定输入格式set timefmt "%Y-%m-%d",然后再指定输入格式set timefmt "%H:%M:%S"。这不是专门用于轴的。因此,当涉及到绘图时,gnuplot 采用当前(后者)格式,这对于第 1 列中的日期当然是错误的。但我可能对这个解释有误。

无论如何,如果您在绘图命令中指定格式(timecolumn(1,"%Y-%m-%d"))应该没问题。

代码:

### two date/time axes
reset session

$Data <<EOD
2019-01-08 10:14:29.000
2019-05-08 00:14:27.000
2019-05-07 14:08:09.000
2019-05-07 22:08:08.000
2019-10-07 12:08:08.000
EOD

## X axis
set xdata time
set timefmt "%Y-%m-%d"
set format x "%m/%d"
set xrange ["2019-01-01":"2019-10-30"]
set xlabel "Date (mm/dd)" font "Times, 12"

# Y axis
set ydata time
set timefmt "%H:%M:%S"
set format y "%H:%M"
set yrange ["00:00":"23:59"]
set ylabel "Time Of Day(hh:mm)" font "Times, 12"

plot $Data using (timecolumn(1,"%Y-%m-%d")):2 w p pt 7

### end of code

结果:

在此处输入图像描述


推荐阅读