Currently, my TimeSeries graph shows the temperature of a location every 2 seconds.
Now, if I want to show the rainfall index along with the temperature every 2 seconds, how can I achieve it?
Here is my code:
import testWeatherService.TestWeatherTimeLapseService;
public class graph extends JFrame implements ActionListener {
private static TimeSeries series;
static final int COUNT = 200;
/** The Constant WINDOW. */
public static final int WINDOW = 25;
TestWeatherTimeLapseService getLocData = new TestWeatherTimeLapseService();
public graph(final String title) {
super(title);
this.series = new TimeSeries("Random Data", Millisecond.class);
this.series2 = new TimeSeries("Random Data", Millisecond.class);
final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
final JPanel content = new JPanel(new BorderLayout());
add(chartPanel, BorderLayout.SOUTH);
content.add(chartPanel);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 600));
setContentPane(content);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
private JFreeChart createChart(final XYDataset dataset) {
final JFreeChart result = ChartFactory.createTimeSeriesChart(
"Graph",
"Time",
"Temperature",
dataset,
true,
true,
false
);
final XYPlot plot = result.getXYPlot();
ValueAxis axis = plot.getDomainAxis();
axis.setAutoRange(true);
axis.setFixedAutoRange(60000); // 60 seconds
axis = plot.getRangeAxis();
axis.setRange(-10.0, 50.0);
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
renderer.setSeriesPaint( 0 , Color.RED );
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
renderer.setSeriesPaint( 1 , Color.RED );
renderer.setSeriesStroke( 1 , new BasicStroke( 4.0f ) );
plot.setRenderer( renderer );
return result;
}
public void actionPerformed(final ActionEvent e) {
//
}
public void update(){
String currTemperature="";
try {
currTemperature=getLocData.getWeatherData("Laverton")[1]; //get temperature of laverton
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
float number = Float.parseFloat(currTemperature);
number=(float) (number-273.15);
final Millisecond now = new Millisecond();
System.out.println("Now = " + now.toString());
this.series.add(new Millisecond(), number);
}
public void doIt(){
final graph demo = new graph("Graph");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Timer timer;
timer = new Timer(2000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
demo.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) { //stop when user closes chart
demo.dispose();
((Timer)e.getSource()).stop();
}
});
update();
}
});
timer.start();
}
});
}}