对于Raspian – Raspberry Pi上的LineChart,我正在经历比正常响应慢的情况。 我正在编码示波器,并不断重新绘制两个500点的系列(共1000点)。 animation已closures。 数据收集是高性能的(低于2ms)。 当前数据重绘时间为800毫秒左右。 所需的重绘时间至less为100ms。 我在下面包含了代码片段。 在树莓派上的高性能javafx图表显示的最佳做法是什么? 我采取了错误的做法? 我应该用不同的图表来连续重绘两行吗?
平台:
显示代码
@FXML LineChart oscilloscope; //indicates that the previous data has been displayed //and that the latest data should now be displayed //didn't bother to synchronize boolean needsUpdating = true; protected void startDisplay() { oscilloscope.setAnimated(false); oscilloscope.setCreateSymbols(false); oscilloscope.getXAxis().setLabel("Time (ms)"); oscilloscope.getXAxis().setAutoRanging(false); oscilloscope.getYAxis().setLabel("Volts (v)"); oscilloscope.getYAxis().setAutoRanging(false); new Thread() { public void run() { while (!done) { XYChart.Series ch1 = getChan1Data(); XYChart.Series ch2 = getChan2Data(); ch1.setName("Channel 1"); ch2.setName("Channel 2"); if (needsUpdated) { needsUpdated = false; Platform.runLater(new Runnable() { @Override public void run() { //performance is the same whether I use this or //oscilloscope.getData().clear() oscilloscope.setData(FXCollections.observableArrayList()); oscilloscope.getData().addAll(ch1, ch2); needsUpdating = true; } //end run() } //end Platform.runLater() } //end if(needsUpdating) } //end while(!done) }.start(); //end new Thread } //end startDisplay()
我发现从图表中删除网格线非常有帮助。
例如
chart.setHorizontalGridLinesVisible(false); chart.setVerticalGridLinesVisible(false);
还没有试图减少网格线的数量。