This discussion is archived
1 Reply Latest reply: Jul 3, 2013 2:54 AM by jwenting RSS

Dynamic jfreechat in 30seconds intervals

GizoMan Newbie
Currently Being Moderated

I am new in JFreeChats and new to Java also...

I have this data from our claims table

SEQ IP_CLAIMS_RECEIVED HB_CLAIMS_RECEIVED IP_AVERAGE_RESPONSE HB_AVERAGE_RESPONSE 30 Seconds 29 19 4 4

This data every 30 seconds will change giving the amount of claims processed and with the avarage seconds it took to process this...

So my graph I want it on the Y-Axis to display the round seconds like (0,,5,10,15,20,25,30,35,40) and then on the X-Axis to display the time - the 30 seconds intervals showing the refresh times... And then the spike-lines would show the average-response times... And if it will be possible have two combined graphs one for IP Claims and another for HB Claims... I have a perfect example of the graph but its confusing me a bit here is the code of it below:

package timeseriesdemo;
  import java.awt.BorderLayout;
  import java.awt.EventQueue;
  import java.awt.FlowLayout;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.util.Random;
  import javax.swing.JButton;
  import javax.swing.JComboBox;
  import javax.swing.JPanel;
  import javax.swing.Timer;
  import org.jfree.chart.ChartFactory;
  import org.jfree.chart.ChartPanel;
  import org.jfree.chart.JFreeChart;
  import org.jfree.chart.axis.ValueAxis;
  import org.jfree.chart.plot.XYPlot;
  import org.jfree.data.time.DynamicTimeSeriesCollection;
  import org.jfree.data.time.Second;
  import org.jfree.data.xy.XYDataset;
  import org.jfree.ui.ApplicationFrame;
  import org.jfree.ui.RefineryUtilities;


public class TimeSeriesDemo extends ApplicationFrame{
private static final String TITLE = "Dynamic Series";
private static final String START = "Start";
private static final String STOP = "Stop";
private static final float MINMAX = 100;
private static final int COUNT = 2 * 60;
private static final int FAST = 100;
private static final int SLOW = FAST * 5;
private static final Random random = new Random();
private Timer timer;

public TimeSeriesDemo(final String title) {
  super(title);

  final DynamicTimeSeriesCollection dataset =
  new DynamicTimeSeriesCollection(1, COUNT, new Second());
  dataset.setTimeBase(new Second(0, 0, 0, 1, 1, 2011));
  dataset.addSeries(gaussianData(), 0, "Gaussian data");
  JFreeChart chart = createChart(dataset);

  final JButton run = new JButton(STOP);
  run.addActionListener(new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
  String cmd = e.getActionCommand();
  if (STOP.equals(cmd)) {
  timer.stop();
  run.setText(START);
  } else {
  timer.start();
  run.setText(STOP);
  }
  }
  });

  final JComboBox combo = new JComboBox();
  combo.addItem("Fast");
  combo.addItem("Slow");
  combo.addActionListener(new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
  if ("Fast".equals(combo.getSelectedItem())) {
  timer.setDelay(FAST);
  } else {
  timer.setDelay(SLOW);
  }
  }
  });

  this.add(new ChartPanel(chart), BorderLayout.CENTER);
  JPanel btnPanel = new JPanel(new FlowLayout());
  btnPanel.add(run);
  btnPanel.add(combo);
  this.add(btnPanel, BorderLayout.SOUTH);

  timer = new Timer(FAST, new ActionListener() {

  float[] newData = new float[1];

  @Override
  public void actionPerformed(ActionEvent e) {
  newData[0] = randomValue();
  System.out.println("dataset1 : "+dataset.advanceTime());
  dataset.advanceTime();
  dataset.appendData(newData);
  }
  });
}

private float randomValue() {
  System.out.println("randomvalue : "+(float) (random.nextGaussian() * MINMAX / 3));
  return (float) (random.nextGaussian() * MINMAX / 3);
}

private float[] gaussianData() {
  float[] a = new float[COUNT];
  for (int i = 0; i < a.length; i++) {
  a[i] = randomValue();

  }

  return a;
}

private JFreeChart createChart(final XYDataset dataset) {
  final JFreeChart result = ChartFactory.createTimeSeriesChart(
  TITLE, "hh:mm:ss", "Claims Received", dataset, true, true, false);
  final XYPlot plot = result.getXYPlot();
  ValueAxis domain = plot.getDomainAxis();
  domain.setAutoRange(true);
  ValueAxis range = plot.getRangeAxis();
  range.setRange(-MINMAX, MINMAX);

  return result;
}

public void start() {
  timer.start();
}

public static void main(final String[] args) {
  EventQueue.invokeLater(new Runnable() {

  @Override
  public void run() {
  TimeSeriesDemo demo = new TimeSeriesDemo(TITLE);
  demo.pack();
  RefineryUtilities.centerFrameOnScreen(demo);
  demo.setVisible(true);
  demo.start();
  }
  });
}

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points