样条曲线每秒更新一次(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)
验证结果。