Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Highcharts 为什么一天是';有两天宽的空数据吗?_Highcharts - Fatal编程技术网

Highcharts 为什么一天是';有两天宽的空数据吗?

Highcharts 为什么一天是';有两天宽的空数据吗?,highcharts,Highcharts,在绘制时间序列数据时,假设我每天都有计数。演示数据: Jan 1: 10 Jan 2: 20 Jan 3: 30 Jan 4: <no data> Jan 5: 50 Jan 6: 60 etc. 1月1日:10 一月二日二十 一月三日三十分 1月4日: 一月五日五十分 一月六日:六十 等 请注意,数据丢失了一天,即1月4日 在highcharts()中显示时,如下所示: 请注意,缺少的一天的“间隔”有两天宽。为什么?我如何避免这种情况 我希望的是将1月3日的数据显示为一条垂直

在绘制时间序列数据时,假设我每天都有计数。演示数据:

Jan 1: 10
Jan 2: 20
Jan 3: 30
Jan 4: <no data>
Jan 5: 50
Jan 6: 60
etc.
1月1日:10
一月二日二十
一月三日三十分
1月4日:
一月五日五十分
一月六日:六十
等
请注意,数据丢失了一天,即1月4日

在highcharts()中显示时,如下所示:

请注意,缺少的一天的“间隔”有两天宽。为什么?我如何避免这种情况

我希望的是将1月3日的数据显示为一条垂直线,如下所示:


我不能只是作弊,在时间戳上加上6个小时,然后使用
步骤:“left”
,因为当用户放大并显示更精确的时间戳时,这种作弊行为就会暴露出来。

它不是2天宽。你有1月3日和5日的数据。整个宽度就是一个日期。你的积分是每天午夜。您没有一整天(从午夜到午夜)的数据。所以在1月3日到5日之间,你有24小时没有数据。要解决这个问题,您需要添加更多基于时间的数据,或者可能使用类别xAxis,它不是2天宽的。你有1月3日和5日的数据。整个宽度就是一个日期。你的积分是每天午夜。您没有一整天(从午夜到午夜)的数据。所以在1月3日到5日之间,你有24小时没有数据。要解决这个问题,您需要添加更多基于时间的数据,或者使用类别xAxis。wergeld的回答让我意识到我问错了问题。所以我接受了@wergeld的回答,但想在这里提供更多细节:

问题不仅在于
null
数据的宽度,还在于下面的假设:

xAxis: { type: 'datetime' }
表示数据表示单个时间点。我有时间序列数据,其中每个数据点代表一个时间间隔(见下文)

我认为HighCharts不允许我按照自己的意愿绘制图表

我想我必须使用类别xAxis。(间隔长度在“列”之间可能有所不同-我现在将忽略这一点。)

在服务器端,我们有更精细的间隔,所以放大确实对我们有意义。我刚刚惊奇地发现,缩放也适用于类别xAxis图表():

这就是我要做的:

  • 使用类别xAxis
  • 假设所有列的宽度相等
  • 通过侦听
    setextrems
    xAxis事件使其可缩放(请参阅)
关于时间导数的脚注 我认为,每次测量的数据代表相对于时间的导数(并且具有诸如
位/s
$/month
等单位),那么在tn处执行的测量实际上代表时间间隔

[tn-1;tn]

而不是像tn这样的单个时间点,因为在测量时,它的“导数”计算/近似为:Δ位/Δt,但实际上Δt不接近0

例如,销售公关月是指4月份,而不是4月1日或5月1日上午12点


因此,Highchart(和flot?)假装所有时间序列数据都代表一个时间点的方法会产生误导性的图形,难以正确解释。

@wergeld的回答让我意识到我问错了问题。所以我接受了@wergeld的回答,但想在这里提供更多细节:

问题不仅在于
null
数据的宽度,还在于下面的假设:

xAxis: { type: 'datetime' }
表示数据表示单个时间点。我有时间序列数据,其中每个数据点代表一个时间间隔(见下文)

我认为HighCharts不允许我按照自己的意愿绘制图表

我想我必须使用类别xAxis。(间隔长度在“列”之间可能有所不同-我现在将忽略这一点。)

在服务器端,我们有更精细的间隔,所以放大确实对我们有意义。我刚刚惊奇地发现,缩放也适用于类别xAxis图表():

这就是我要做的:

  • 使用类别xAxis
  • 假设所有列的宽度相等
  • 通过侦听
    setextrems
    xAxis事件使其可缩放(请参阅)
关于时间导数的脚注 我认为,每次测量的数据代表相对于时间的导数(并且具有诸如
位/s
$/month
等单位),那么在tn处执行的测量实际上代表时间间隔

[tn-1;tn]

而不是像tn这样的单个时间点,因为在测量时,它的“导数”计算/近似为:Δ位/Δt,但实际上Δt不接近0

例如,销售公关月是指4月份,而不是4月1日或5月1日上午12点


因此,Highchart(和flot?)假装所有时间序列数据都代表一个时间点的方法会产生误导性的图形,难以正确解释。

我的老板有一个好主意:除了在时间间隔的开头有一个数据点,为什么不在间隔结束时创建一些假数据点呢?因此,数据反而变成:

Jan 1 00:00:00: 10
Jan 1 23:59:59: 10
Jan 2 00:00:00: 20
Jan 2 23:59:59: 20
Jan 3 00:00:00: 30
Jan 3 23:59:59: 30
Jan 4 00:00:00: <no data>
Jan 4 23:59:59: <no data>
Jan 5 00:00:00: 50
Jan 5 23:59:59: 50
Jan 6 00:00:00: 60
Jan 6 23:59:59: 60
etc.
1月1日00:00:00:10
一月一日23:59:59:10
一月二日00:00:00:20
一月2日23:59:59:20
一月三日00:00:00:30
一月三日23:59:59:30
一月四日00:00:00:
一月四日23:59:59:
一月五日00:00:00:50
一月五日23:59:59:50
一月六日00:00:00:60
一月六日23:59:59:60
等
它工作得很好!():


(当然,这有一个缺点,即用两倍于可能导致性能问题的数据量呈现Highchart)

我的老板有一个好主意:除了在区间开始时有一个数据点,为什么不在区间结束时创建一些假数据点呢?因此,数据反而变成:

Jan 1 00:00:00: 10
Jan 1 23:59:59: 10
Jan 2 00:00:00: 20
Jan 2 23:59:59: 20
Jan 3 00:00:00: 30
Jan 3 23:59:59: 30
Jan 4 00:00:00: <no data>
Jan 4 23:59:59: <no data>
Jan 5 00:00:00: 50
Jan 5 23:59:59: 50
Jan 6 00:00:00: 60
Jan 6 23:59:59: 60
etc.
1月1日00:00:00:10
一月一日23:59:59:10
一月二日00:00:00:20
一月2日23:59:59:20
一月三日00:00:00:30
一月三日23:59:59:3