摘要 这是在绘制股票交易K线图时遇到的一个问题,有关问题的优化方案,与一些具体的实现
方法,以及在这个过程中的心得。
关键词JFreeChart、SegmentTimeline
问题
在绘制股票交易K线图时,遇到如何去除停牌日期的交易数据问题。此问题涉及到两个方面,
周六周日股票停牌无交易日期和特殊假日股票停牌无交易日期。对于周末这个固定的休息日,股
票是不存在交易数据的,即停牌,在K线图上显示的话就是空白。同样,对于特殊的时间节点
也不存在交易数据,在K线图上也是空白。因此在绘制K线图时,为了保证数据显示的连续性
和美化视角,我们要将这些特殊的日期的横轴坐标从原数据坐标中去掉,或者说隐藏不显示。
现状分析
在设置K线图的X轴时间线性集合时没有将异常交易日期(即停牌缺口)从时间线性集合
中去除掉。要想实现停牌日期缺口优化,就要设法将缺口日期从时间线性集合去除或使该缺口日
期隐藏不显示,从而达到K线图的连续不间断,便于统计分析。
意义
主要是对停牌日期缺口进行异常处理,以去除掉无交易的日期,保证X轴时间上的连续
性(有交易),使K线图显示数据变化是连续不间断的,有利于数据分析。
要将停牌缺口从时间线性集合中去除掉,必须涉及到下列相关对象、属性和方法的应用:
SegmentTimeline: 时间线性集合对象,包含已定义的交易时间轴的下限和上限
timeline.setStartTime(SegmentedTimeline.FIRST_MONDAY_AFTER_1900);//设置
时间线起点为1900年(一定要设置起始年份,否则时间轴没有基点,会错乱)
addException(Date date):从已定义的时间轴范围内,去除参数指定日期函数
DateAxis:时间线性X轴对象
x1Axis.setAutoRange(false);//设置不采用自动设置时间范围
x1Axis.setRange(date1,date2);//设置时间范围
x1Axis.setTimeline(timeline);//设置X轴时间线性集合
x1Axis.setAutoTickUnitSelection(false);//设置不采用自动选择刻度值
x1Axis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);//设置标记的位置
x1Axis.setStandardTickUnits(DateAxis.createStandardDateTickUnits());//设
置标准的时间刻度单位
x1Axis.setTickUnit(newDateTickUnit(DateTickUnit.