样条曲线每秒更新一次(Spline updating each second)

优质
小牛编辑
137浏览
2023-12-01

我们已经在Highcharts Configuration Syntax一章中看到了用于绘制图表的配置

下面给出了每秒更新的样条图表的示例。

配置 (Configurations)

现在让我们看一下所采取的其他配置/步骤。

series.addPoint

添加以1000毫秒的间隔随机创建的新点。

Timer tempTimer = new Timer() {  
   @Override  
   public void run() {  
      series.addPoint(  
         new Date().getTime(),  
         Random.nextDouble(),  
         true, true, true  
      );  
   }  
};  
tempTimer.scheduleRepeating(1000);

例子 (Example)

HelloWorld.java

package cn.xnip.client;
import java.util.Date;
import org.moxieapps.gwt.highcharts.client.Chart;
import org.moxieapps.gwt.highcharts.client.Credits;
import org.moxieapps.gwt.highcharts.client.Legend;
import org.moxieapps.gwt.highcharts.client.Series;
import org.moxieapps.gwt.highcharts.client.ToolTip;
import org.moxieapps.gwt.highcharts.client.ToolTipData;
import org.moxieapps.gwt.highcharts.client.ToolTipFormatter;
import org.moxieapps.gwt.highcharts.client.Series.Type;
import org.moxieapps.gwt.highcharts.client.labels.DataLabels;
import org.moxieapps.gwt.highcharts.client.plotOptions.BarPlotOptions;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.Random;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.RootPanel;
public class HelloWorld implements EntryPoint {
   public void onModuleLoad() {
      final Chart chart = new Chart()  
         .setChartTitleText("Live random data")
         .setType(Type.SPLINE)
         .setMarginRight(10)
         .setBarPlotOptions(new BarPlotOptions()
               .setDataLabels(new DataLabels()
               .setEnabled(true)
            )
         )
         .setLegend(new Legend()
            .setEnabled(true)
         )
         .setCredits(new Credits()
            .setEnabled(false)
         )
         .setToolTip(new ToolTip()
            .setFormatter(new ToolTipFormatter() {
            @Override
            public String format(ToolTipData toolTipData) {
               return "<b>" + toolTipData.getSeriesName() + "</b><br/>" +  
               DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss")  
               .format(new Date(toolTipData.getXAsLong())) + "<br/>" +  
               NumberFormat.getFormat("0.00").format(toolTipData.getYAsDouble());  
            }
         })
      );
      chart.getXAxis()  
         .setType(org.moxieapps.gwt.highcharts.client.Axis.Type.DATE_TIME)
         .setTickInterval(150);
      chart.getYAxis()  
         .setAxisTitleText("Value")
         .setPlotLines(chart.getYAxis().createPlotLine()
            .setValue(0)
            .setWidth(1)
            .setColor("#808080")
         );
      final Series series = chart.createSeries(); 
      series.setName("Random Data");
      chart.addSeries(series);  
      // Generate an array of random data  
      long time = new Date().getTime();  
      for(int i = -19; i <= 0; i++) {  
         series.addPoint(time + i * 1000, Random.nextDouble());  
      }  
      Timer tempTimer = new Timer() {  
         @Override  
         public void run() {  
            series.addPoint(  
               new Date().getTime(),  
               Random.nextDouble(),  
               true, true, true  
            );  
         }  
      };  
      tempTimer.scheduleRepeating(1000);
      RootPanel.get().add(chart);
   }
}

结果 (Result)

验证结果。

样条图更新