我使用的是chart.js(使用angular-charts指令),我面临着不同数据集sizez的问题。我必须在折线图中显示时间轴中的一些值。所以我的数据结构如下:
datasets : [
[ {"x" : date1, "y" : 2 }, {"x" : date1, "y" : 5 } ..], //first dataset
[ {"x" : date2, "y" : 3 }, {"x" : date4, "y" : 7 } ..] //second one
];
其中date1,date2,.. date4是时刻日期,y是随机值。 现在,如果第一个数据集具有相同数量的第二个数据集的值,则一切正常。但是如果我有不同的数据集大小(例如,第一个具有昨天的值,今天是今天和明天的第二个)那么传奇工具提示是完全错误的。它总是显示每个系列的NTH值,即使它们处于不同的日期。用文字解释有点困难,英语不是我的语言。我在这里留下自我解释的截图:
我该如何避免这种行为?
答案 0 :(得分:0)
为了防止对其他开发人员有所帮助,我设法解决了规范化数据的问题。 I.E.我改变了我的数据:
def createWsObservable(url: String, onStartAction: WebSocket ⇒ Option[KillSwitch] = _ ⇒ None, bufferSize: Int = 32): Source[WsMessage, KillSwitch] = {
val actorSource = Source.actorRef[WsMessage](bufferSize, OverflowStrategy.fail)
actorSource.mapMaterializedValue { actor ⇒
val listener: WebSocketListener = new WebSocketListener() {
override def onOpen(ws: WebSocket): Unit =
actor ! ...
override def onClose(ws: WebSocket, code: Int, reason: String): Unit =
actor ! akka.actor.Status.Success(code)
override def onBinaryFrame(payload: Array[Byte], finalFragment: Boolean, rsv: Int): Unit =
actor ! ...
override def onTextFrame(payload: String, finalFragment: Boolean, rsv: Int): Unit =
actor ! ...
override def onError(t: Throwable): Unit =
actor ! akka.actor.Status.Failure(t)
}
val websocket =
asyncHttpClient
.prepareGet(url)
.execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(listener).build).get
// Use Pong reply as indication that we've connected to the server
val p = Promise[Void]()
websocket.sendPingFrame().addListener(p)
val onStartKillSwitchFut = p.future.map(_ ⇒ onStartAction(websocket))
new KillSwitch {
override def shutdown(): Unit = {
onStartKillSwitchFut.map(_.foreach(_.shutdown()))
websocket.sendCloseFrame()
}
override def abort(ex: Throwable): Unit = {
onStartKillSwitchFut.map(_.foreach(_.abort(ex)))
websocket.sendCloseFrame()
}
}
}
}
到:
[
[{"x" : date1, "y" : valueA }, {"x" : date2, "y" : valueB }, {"x" : date3, "y" : valueC }],
[{"x" : date3, "y" : valueD }, {"x" : date4, "y" : valueE }]
]
因此,每个数据集包含相同数量的元组,即从第一个数据集和第二个数据集合并日期并删除重复项的结果。