Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [JAVA]Qualche aggiustamento con le TimeSeries...mi date una mano?

    Ho ottenuto un grafico del genere:


    codice:
    import java.awt.Dimension;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import javax.swing.JDesktopPane;
    import javax.swing.JInternalFrame;
    
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.data.time.Hour;
    import org.jfree.data.time.Day;
    import org.jfree.data.time.RegularTimePeriod;
    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 InternalFrameDemo extends ApplicationFrame {
    
        public InternalFrameDemo(final String title) {
            super(title);
            	 final JDesktopPane desktopPane = new JDesktopPane();
            	 desktopPane.setPreferredSize(new Dimension(800, 600));
            	 final JInternalFrame frame = createFrame();
            	 desktopPane.add(frame);
            	 frame.pack();
            	 frame.setLocation(0, 0);
            	 frame.setVisible(true); 
            	 getContentPane().add(desktopPane);
        }
        private JInternalFrame createFrame() {
            final XYDataset dataset1 = createDataset("Series 1",new Day());
        	final JFreeChart chart = ChartFactory.createTimeSeriesChart("Titolo Trend","Tempo","Temperatura",dataset1,true,true,false);
            final ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new Dimension(800, 600));
            
            final JInternalFrame frame = new JInternalFrame("Prove Trend", true);
            frame.getContentPane().add(chartPanel);
            return frame;
        }
        private XYDataset createDataset(final String name,final RegularTimePeriod start) {
        	
            final TimeSeries series = new TimeSeries(name, start.getClass());
        	Connection con = null;
        	RegularTimePeriod period = start;
        	  
            try {
            	String driver = "net.sourceforge.jtds.jdbc.Driver";
            	Class.forName(driver).newInstance();
            	} 
            catch (Exception e) {
            	System.out.println("Fallito il caricamento dei driver SQL.");
            	return (null);
            					}
            try {
            	// Query SQL
            	String SQL= "SELECT * FROM Cella30Trend ";
            	// Connessione col database in cui vengono specificati url, nome utente, password
            	con = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/DbFrigo", "**", "**");
            	Statement select = con.createStatement();
            	//caricamento query SQL
            	ResultSet result = select.executeQuery(SQL);
            	
    
              		while (result.next()) {
    
              			String tempo = result.getString(2);
              			double temp_a = result.getDouble(3);
           
              	DateFormat dateformat=new SimpleDateFormat("yyyy/MM/dd HH.mm.ss");
              			java.util.Date data=dateformat.parse(tempo);
    
              			series.addOrUpdate(new Day(data),temp_a);
              								}
            	} 
            catch (Exception e) {
            	e.printStackTrace();
            					} 
            					finally {
            							if (con != null) {
            												try {
    			con.close();										} 										catch (Exception e) {										e.printStackTrace();
            																		}
           									}
            					}				
            final TimeSeriesCollection dataset = new TimeSeriesCollection();
            dataset.addSeries(series);
    
            return dataset;
        }
    
        public static void main(final String[] args) {
            final InternalFrameDemo demo = new InternalFrameDemo("Trend 1");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);     
        }
    }
    Solo che vorrei nell'asse delle ordinate che il tempo fosse scandito con un intevallo di 2 ore partendo da 0:00.....in modo che il grafico abbia un filo logico ben preciso.....

    Inoltre vorrei che questo trend mi si aprisse in un frame e non come fa adesso....
    e poi vorrei generare più righe nello stesso trend con stessa data, ma con valori diversi perchè sono riferiti a rilevamenti diversi: esempio (temp_i e temp_u)

    E se possibile a destra nel trend vorrei una parcentuale da 0 a 100%....per capire l'andamento del grafico...

    Mi potete dare una mano???

    GRAZIE

  2. #2
    Potrei avere qualche suggerimento???

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.