【问题标题】:Jfreechart: How exclude weekend days from chart?Jfreechart:如何从图表中排除周末?
【发布时间】:2012-11-16 01:29:18
【问题描述】:
  1. 如何从 jfreechart 中排除一两天?我输入了没有星期六的日期和没有星期六的图表,但在轴上有所有日期。
  2. 我已在屏幕上添加了所有项目。如何在屏幕上查看

更新: 我制作了 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 根的蜡烛?

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

这是来自文件的图表,字符串很少:

【问题讨论】:

  • 您能否添加一个示例或进一步的信息,它必须帮助您使用您提供的信息
  • 看起来您正在使用DefaultHighLowDataset,您需要使用/实现CategoryDataset 以避免出现空白,但我认为没有开箱即用的合适实现。
  • 这是一个很好看的问题。
  • 我不明白如何使用 CategoryDataset。能说详细点吗?

标签: java android jfreechart


【解决方案1】:

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

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

您可以选择自己的离散点在图表上表示。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2017-07-23
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    相关资源
    最近更新 更多