2012-11-16 10 views
5
  1. Jak wyłączyć jeden lub dwa dni od jfreechart? Mam datę wejścia bez soboty i wykresu bez soboty, ale w osi jest cała data.
  2. Mam wszystkie dodane elementy na ekranie. Jak wyświetlać < = 100 pozycji na ekranie i jeśli przewijanie do prawego elementu dodać więcej.

AKTUALIZACJA: Wykonuję CandleChart, korzystałem z biblioteki JfreeChart. Od 12 do 14 dni wykres nie powinien być przerywany.Jfreechart: Jak wykluczać dni weekendowe z wykresu?

enter image description here

Jest to ciąg: Jeden lub kilka dni to może poza czasem.

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 

Jest to kod:

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; 
     } 

Również schemat zoom zależy od mach ciąg w pliku. Jak rysować świece nie więcej niż 100 na ekranie?

Jest to wykres z pliku z wielu ciągów:

enter image description here

Jest to wykres z pliku z kilku strun: enter image description here

+0

można dodać przykładowe lub dalsze infomation, jej musiał pomóc stosując informacjom – GrahamA

+1

to wyglądało używasz 'DefaultHighLowDataset', musisz użyć/implementować' CategoryDataset', aby uniknąć odstępów, ale nie sądzę, że istnieje odpowiednia implementacja po wyjęciu z pudełka. – GrahamA

+0

To jest całkiem dobrze wyglądające pytanie. –

Odpowiedz

2

Jeśli to szczególnie świecznik chcesz to zrobić z robię nie wierzę, że klasa JFreechart ją obsługuje. Możesz użyć Box and Whisker do naśladowania zachowania podczas korzystania z danych opartych na kategoriach. Dla wykresów, które pokazałeś, oś reprezentuje dane ciągłe, oś kategoryczna jest dla danych dyskretnych.

Przykładowy kod pokazany jest tutaj: http://www.java2s.com/Code/Java/Chart/JFreeChartBoxAndWhiskerDemo.htm

z tym można wybrać własne dyskretne punkty mają być reprezentowane na wykresie.

Jeśli to do niczego innego niż świeczniki, Graham miał rację i DefaultCategoryDataset byłyby bardziej przydatne: http://www.jfree.org/jfreechart/api/javadoc/org/jfree/data/category/DefaultCategoryDataset.html

Powiązane problemy