Jfreechart:如何从图表中排除周末天数?

时间:2012-11-16 01:29:19

标签: java android jfreechart

  1. 如何从jfreechart中排除一两天?我没有星期六的输入日期和没有星期六的图表,但在轴上有所有日期。
  2. 我在屏幕上添加了所有项目。如何在屏幕上查看< = 100项目,如果向右滚动项目添加更多项目。
  3. 更新: 我制作了CandleChart,使用了JfreeChart库。 图表不应该在12到14天之间中断。

    enter image description here

    这是字符串: 一天或几天可能是关闭时间。

    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
    

    这是代码:

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

    此外,图表缩放取决于文件中的马赫字符串的方式。如何在屏幕上绘制不超过100的蜡烛?

    这是包含许多字符串的文件中的图表:

    enter image description here

    这是包含少量字符串的文件中的图表: enter image description here

1 个答案:

答案 0 :(得分:2)

如果您想要使用它,特别是烛台,我不相信JFreechart类支持它。您可以使用Box和Whisker来模仿使用基于类别的数据时的行为。对于您显示的图表,轴表示连续数据,分类轴表示离散数据。

示例代码如下所示: http://www.java2s.com/Code/Java/Chart/JFreeChartBoxAndWhiskerDemo.htm

通过它,您可以选择自己的离散点在图表上显示。

如果它不是烛台,格雷厄姆是对的,而DefaultCategoryDataset会更有用: http://www.jfree.org/jfreechart/api/javadoc/org/jfree/data/category/DefaultCategoryDataset.html