2012-11-16 27 views
5
  1. Làm thế nào loại trừ một hoặc hai ngày từ jfreechart? Tôi có ngày đầu vào mà không có thứ bảy và biểu đồ mà không có thứ bảy, nhưng trong trục có tất cả các ngày.
  2. Tôi có tất cả mục đã thêm trên màn hình. Cách xem < = 100 mục trên màn hình và nếu di chuyển đến mục bên phải, hãy thêm mục khác.

CẬP NHẬT: Tôi tạo CandleChart, sử dụng thư viện JfreeChart. Giữa biểu đồ 12 và 14 ngày không nên bị gián đoạn.Jfreechart: Làm cách nào để loại trừ các ngày cuối tuần khỏi biểu đồ?

enter image description here

Đây là chuỗi: Một hoặc vài ngày là có thể off-time.

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 

Đây là mã:

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

Ngoài ra, sơ đồ zoom phụ thuộc vào cách mach chuỗi trong tập tin. Làm thế nào vẽ nến không quá 100 trên màn hình?

Đây là bảng xếp hạng từ tập tin với nhiều chuỗi:

enter image description here

Đây là biểu đồ từ tập tin với vài chuỗi: enter image description here

+0

Bạn có thể thêm một ví dụ hoặc Thông tin thêm, đã có của mình để giúp sử dụng thông tin bạn đã cung cấp – GrahamA

+1

Nó trông giống như bạn đang sử dụng 'DefaultHighLowDataset', bạn sẽ cần phải sử dụng/thực hiện một' CategoryDataset' để tránh khoảng trắng nhưng tôi không nghĩ rằng có một thực hiện phù hợp ra khỏi hộp. – GrahamA

+0

Đây là một câu hỏi khá hay. –

Trả lời

2

Nếu đó là đặc biệt nến bạn muốn làm điều này với, tôi làm không tin rằng lớp JFreechart hỗ trợ nó. Bạn có thể sử dụng Box And Whisker để bắt chước hành vi trong khi sử dụng dữ liệu dựa trên danh mục. Đối với các biểu đồ bạn đã hiển thị trục đại diện cho dữ liệu liên tục, trục danh mục là dành cho dữ liệu rời rạc.

Ví dụ mã được hiển thị ở đây: http://www.java2s.com/Code/Java/Chart/JFreeChartBoxAndWhiskerDemo.htm

Với nó, bạn có thể chọn điểm rời rạc của riêng bạn để được biểu diễn trên đồ thị.

Nếu nó cho bất cứ điều gì khác hơn là nến, Graham đã đúng và DefaultCategoryDataset sẽ hữu ích hơn: http://www.jfree.org/jfreechart/api/javadoc/org/jfree/data/category/DefaultCategoryDataset.html

Các vấn đề liên quan