5
  1. 如何从 jfreechart 中排除一两天?我输入了没有星期六的日期和没有星期六的图表,但在轴上都有所有日期。
  2. 我已经在屏幕上添加了所有项目。如何在屏幕上查看 <= 100 项以及是否滚动到右侧项添加更多。

更新:我制作了 CandleChart,使用了 JfreeChart 库。不应中断 12 至 14 天图表。

在此处输入图像描述

这是字符串:一天或几天可能是休息时间。

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 根的蜡烛?

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

在此处输入图像描述

这是文件中带有少量字符串的图表: 在此处输入图像描述

4

1 回答 1

2

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

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

有了它,您可以选择要在图表上表示的自己的离散点。

如果是烛台以外的任何东西,格雷厄姆是对的,DefaultCategoryDataset 会更有用: http ://www.jfree.org/jfreechart/api/javadoc/org/jfree/data/category/DefaultCategoryDataset.html

于 2013-01-18T09:57:03.063 回答