2012-11-16 13 views
5
  1. Come escludere uno o due giorni da jfreechart? Ho una data di inserimento senza sabato e grafico senza sabato, ma in asse c'è tutta la data.
  2. Ho aggiunto tutti gli elementi sullo schermo. Come visualizzare < = 100 elementi sullo schermo e se si scorre a destra aggiungere altro.

AGGIORNAMENTO: Realizzo CandleChart, libreria JfreeChart utilizzata. Tra 12 e 14 giorni il grafico non dovrebbe essere interrotto.Jfreechart: come escludere i giorni del fine settimana dal grafico?

enter image description here

Questo è stringa: uno o pochi giorno è forse fuori tempo.

12.10.2012 19:00 1.2951 1.296 1.2947 1.2956 
12.10.2012 20:00 1.2956 1.296 1.295 1.2954 
**12.10.2012 21:00 1.2955 1.2959 1.2948 1.2949** 
**14.10.2012 22:00 1.2952 1.296 1.2948 1.2953** 
14.10.2012 23:00 1.2955 1.2955 1.2942 1.2947 

Questo è il codice:

static TimeSeries t1 = new TimeSeries(""); 
    RegularTimePeriod day = new Day(); 
    RegularTimePeriod hour = new Hour(); 
private static OHLCDataset createPriceDataset(String FILENAME_SD) 
     { 
      OHLCSeries s1 = new OHLCSeries(FILENAME_SD); 

       if (!Environment.getExternalStorageState().equals(
        Environment.MEDIA_MOUNTED)) { 

       } 
       File sdPath = Environment.getExternalStorageDirectory(); 
       sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD); 
       File sdFile = new File(sdPath, FILENAME_SD); 
      try { 
       BufferedReader in = new BufferedReader(new FileReader(sdFile)); 
       DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm"); 
       String inputLine; 

       in.readLine(); 
       while ((inputLine = in.readLine()) != null) { 
        String[] data = inputLine.split("\\s+");      
        Date date = df.parse(data[0] + " " + data[1]);     
        double open  = Double.parseDouble(data[2]); 
        double high  = Double.parseDouble(data[3] ); 
        double low  = Double.parseDouble(data[4] ); 
        double close = Double.parseDouble(data[5] ); 
        // double volume = Double.parseDouble(st.nextToken()); 
        //double adjClose = Double.parseDouble(st.nextToken()); 
        s1.add(new Hour(date), open, high, low, close); 
        t1.add(new Hour(date), open);  
       }  
       in.close();    
      } 
      catch (Exception e) { 
       e.printStackTrace(); 
      } 



      OHLCSeriesCollection dataset = new OHLCSeriesCollection(); 
      dataset.addSeries(s1); 
      return dataset; 
     } 

Inoltre, schema zoom dipende da come mach stringa nel file. Come disegnare candele non più di 100 sullo schermo?

Si tratta di grafico da file con molte corde:

enter image description here

Questo è grafico da file con alcune stringhe: enter image description here

+0

è possibile aggiungere un esempio o ulteriormente infomation, la sua doveva aiutare utilizzando le informazioni che hai fornito – GrahamA

+1

Assomiglia stai usando 'DefaultHighLowDataset', avresti bisogno di usare/implementare un' CategoryDataset' per evitare spazi vuoti, ma non penso che ci sia un'implementazione adatta fuori dalla scatola. – GrahamA

+0

Questa è una domanda piuttosto bella. –

risposta

2

Se è particolarmente candeliere si vuole fare questo con, lo faccio non credo che la classe JFreechart lo supporti. È possibile utilizzare Box And Whisker per imitare il comportamento durante l'utilizzo di dati basati su categorie. Per i grafici che hai mostrato l'asse rappresenta i dati continui, gli assi categoriali sono per i dati discreti.

codice di esempio è mostrato qui: http://www.java2s.com/Code/Java/Chart/JFreeChartBoxAndWhiskerDemo.htm

Con questo è possibile scegliere i propri punti discreti ad essere rappresentata sul grafico.

Se è per qualcosa di diverso da candelabri, Graham era giusto e DefaultCategoryDataset sarebbe più utile: http://www.jfree.org/jfreechart/api/javadoc/org/jfree/data/category/DefaultCategoryDataset.html

Problemi correlati