Spline atualizando a cada segundo
Já vimos a configuração usada para desenhar um gráfico no capítulo Highcharts Configuration Syntax .
Um exemplo de um gráfico Spline atualizando a cada segundo é fornecido abaixo.
Configurações
Vamos agora ver as configurações / etapas adicionais realizadas.
series.addPoint
Adicione um novo ponto criado aleatoriamente à série em um intervalo de 1000 milissegundos.
Timer tempTimer = new Timer() {
@Override
public void run() {
series.addPoint(
new Date().getTime(),
Random.nextDouble(),
true, true, true
);
}
};
tempTimer.scheduleRepeating(1000);
Exemplo
HelloWorld.java
package com.tutorialspoint.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);
}
}
Resultado
Verifique o resultado.