Highcharts:显示缺失数据的x轴但忽略某些区域

时间:2017-09-04 07:14:13

标签: highcharts highstock

我想使用Highcharts StockChart库来制作图表。以下是我需要创建的图表的更多信息:

  • 图表的类型为datetime
  • 数据每分钟都在更新(来自股票的数据),因此图表会不断更新。
  • 图表的数据是从上午9点到上午11点40分,然后是下午12点35分到下午3点(午休时间)。
  • 数据显示为条形,间隔为5分钟(除午休时间外每5分钟收到一次数据)。
  • 当收到数据时,将从左到右开始绘制条形。
  • 无论图表上显示的数据量是多少,条形宽度都必须相同。
  • 图表的x轴标签需要始终相同且位于相同位置(从每小时上午9:00到下午3:00),即使缺少数据(必须在x轴上绘制一条线)

所以,我正在使用当天下午3:00设置的max属性设置在图表的x轴上。有了这个,我可以:

  • 使条形宽度相同
  • 无论相同间隔的丢失数据如何,都要绘制x轴(​​直到下午3点)。

一切正常,直到午休时间(上午11:40)。但是,在下午12:35(午休后)接收数据时,图表将忽略max属性,并且绘制的x轴的最后一行直到下午1点(此行需要绘制到下午3点) 。我认为这是因为直到上午11点40分才出现5分钟的所有数据,因此图表了解需要绘制数据的时间间隔,并且可以在相同的时间间隔上绘制x轴线。但是一旦数据存在差距,图表就不知道数据是否会在5分钟的时间间隔内出现,所以只考虑到目前为止收到的所有数据,忽略{{1属性。

为了解决这个问题,我尝试了不同的选择:

  • 我将max属性设置为false。有了这个,我可以解决丢失的x轴标签问题,直到下午3点,但问题是午休时间在图表上会有间隙。我需要合并午休时间并将x轴标签绘制到下午3点。
  • 我尝试使用ordinal属性,并且能够设置x轴的间隔,但仅适用于正在绘制的数据。但是,x轴标记它直到下午1点,需要到下午3点。
  • 我尝试使用tickInterval属性进行午休,同时将breaks属性设置为false但不起作用。此外,图表需要在午休时间合并;使用此属性会故意产生差距,因此此属性不会帮助我解决此问题。

所以,我注意到在有数据的地方正确地改变了间隔,但是没有在x轴上没有数据的地方绘制线条(直到下午1点而不是直到下午3点)。如果我使用ordinal属性,它将显示缺失数据的所有x轴线,但需要隐藏午休时间的间隙。

对此有任何帮助表示赞赏=)

更新:

我注意到,当仍然没有数据时,如果使用v1.3.1 of highcharts(我正在使用的那个),x轴线正在被正确绘制,直到下午3点,但是如果使用最新版本,则不会发生。似乎最新版本忽略了ordinal属性。

在评论中包含我的代码的jsfiddle链接(因为stackoverflow不允许我发布许多链接,因为没有足够的声誉)。

1 个答案:

答案 0 :(得分:0)

我能够实现我想要的目标。最后我做的是创建空数据以填补午休时间。此外,我为剩余数据创建了空数据,直到下午3点,这样就可以正确绘制x轴线:https://jsfiddle.net/K4Cj6/201/:     window

非常感谢大家=)