更新: 我制作了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的蜡烛?
这是包含许多字符串的文件中的图表:
这是包含少量字符串的文件中的图表:
答案 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