JFreeChart - TimeSeries-Diagramm
Ein Zeitreihendiagramm zeigt eine Folge von Datenpunkten an, die in gleichen Zeitintervallen variiert. Dieses Kapitel zeigt, wie wir mit JFreeChart erstellen könnenTime Series Chart aus einem bestimmten Satz von Geschäftsdaten.
Geschäftsdaten
Betrachten wir verschiedene Zufallszahlen, die mit der Standard-Java-API generiert wurden Math.random(). Wir verwenden diese Zahlen, um ein Zeitreihendiagramm zu erstellen. Sie können ein ähnliches Diagramm für die Gesamtzahl der Fehler erstellen, die in einem bestimmten Zeitraum auf Ihrer Website auftreten.
AWT-basierte Anwendung
Im Folgenden finden Sie den Code zum Erstellen eines Zeitreihendiagramms aus den von generierten Zahlen Math.random() zu einem bestimmten Zeitpunkt intern.
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class TimeSeries_AWT extends ApplicationFrame {
public TimeSeries_AWT( final String title ) {
super( title );
final XYDataset dataset = createDataset( );
final JFreeChart chart = createChart( dataset );
final ChartPanel chartPanel = new ChartPanel( chart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 370 ) );
chartPanel.setMouseZoomable( true , false );
setContentPane( chartPanel );
}
private XYDataset createDataset( ) {
final TimeSeries series = new TimeSeries( "Random Data" );
Second current = new Second( );
double value = 100.0;
for (int i = 0; i < 4000; i++) {
try {
value = value + Math.random( ) - 0.5;
series.add(current, new Double( value ) );
current = ( Second ) current.next( );
} catch ( SeriesException e ) {
System.err.println("Error adding to series");
}
}
return new TimeSeriesCollection(series);
}
private JFreeChart createChart( final XYDataset dataset ) {
return ChartFactory.createTimeSeriesChart(
"Computing Test",
"Seconds",
"Value",
dataset,
false,
false,
false);
}
public static void main( final String[ ] args ) {
final String title = "Time Series Management";
final TimeSeries_AWT demo = new TimeSeries_AWT( title );
demo.pack( );
RefineryUtilities.positionFrameRandomly( demo );
demo.setVisible( true );
}
}
Lassen Sie uns den obigen Java-Code beibehalten TimeSeries_AWT.java Datei, und kompilieren Sie es dann und führen Sie es aus dem Befehl aus, der als -
$javac TimeSeries_AWT.java
$java TImeSeries_AWT
Wenn alles in Ordnung ist, wird es kompiliert und ausgeführt, um das folgende Zeitreihendiagramm zu generieren:
JPEG-Bilderzeugung
Lassen Sie uns das obige Beispiel neu schreiben, um ein JPEG-Bild über eine Befehlszeile zu generieren.
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.chart.ChartUtilities;
public class TimeSeriesChart {
public static void main( final String[ ] args )throws Exception {
final TimeSeries series = new TimeSeries( "Random Data" );
Second current = new Second();
double value = 100.0;
for ( int i = 0 ; i < 4000 ; i++ ) {
try {
value = value + Math.random( ) - 0.5;
series.add( current , new Double( value ) );
current = ( Second ) current.next( );
} catch ( SeriesException e ) {
System.err.println( "Error adding to series" );
}
}
final XYDataset dataset=( XYDataset )new TimeSeriesCollection(series);
JFreeChart timechart = ChartFactory.createTimeSeriesChart(
"Computing Test",
"Seconds",
"Value",
dataset,
false,
false,
false);
int width = 560; /* Width of the image */
int height = 370; /* Height of the image */
File timeChart = new File( "TimeChart.jpeg" );
ChartUtilities.saveChartAsJPEG( timeChart, timechart, width, height );
}
}
Lassen Sie uns den obigen Java-Code beibehalten TimeSeriesChart.java Datei, und kompilieren Sie es dann und führen Sie es aus dem Befehl aus, der als -
$javac TimeSeriesChart.java
$java TimeSeriesChart
Wenn in Ihrer Umgebung alles in Ordnung ist, wird es kompiliert und ausgeführt, um eine JPEG-Bilddatei zu erstellen TimeChart.jpeg Datei in Ihrem aktuellen Verzeichnis.