JFreeCharts画分时图

来源:互联网 发布:联通网络解锁助手官网 编辑:程序博客网 时间:2024/04/30 00:18
        记录下画分时图的过程。
    

        分时图绘画过程也就是折线图和柱状图的结合,这里还是用CombinedDomainXYPlot这个类来结合画图。

        首先画折线。这里折线分为两条,一条是今日走势,一条是昨日收盘价。先说数据定义,这里因为时间范围是今天,而每一个点的数据精度到每分钟,所以在使用TimeSeries时使用Millisecond时间精准到每分钟。而昨日收盘价是一个不会变的数据,这里可以用Day,直接定义为全天范围就行了。数据定义好后,设置画图器XYLineAndShapeRenderer,先设置今日走势的折线颜色为White,然后设置昨收颜色为Red(跟国内大盘样式保持一致),然后设置setSeriesShapeVisible(false),也就是折线上面的点(小方块)不显示。
        
        画图器设置完,设置x轴,这里需要注意的是,国内大盘开盘时间为9:30-11:30(上午)13:00-15:00(下午),所以这里时间轴(x轴)自定义时间范围为9:30-15:00,11:30-13:00中间间隔时间用SegmentedTimeLine来排除addException(start,end),然后设置时间刻度间隔为30分钟。

        y轴这里需要设置两条,这里我只说一条。跟x轴一样,先关闭自动设置,然后设置好数据范围。一般情况下这样就结束了。但是,如上图所示,画股票分时图的时候就会有需要设置y轴多种颜色的情况,然而类提供的setPaint只能统一改变颜色,所以建议写一个类,去继承NumberAxis,重写里面的drawTickMarksAndLabels(Graphics2D g2, double cursor, Rectangle2D plotArea, Rectangle2D dataArea, RectangleEdge edge)。这个类里在使用迭代器循环的时候TextUtilities.drawRotatedString这个函数就是写y轴的颜色。可以在这之前改变G笔的颜色setPaint就行了。至于数据,存放在ValueTick里。顺便提一下,如果要改变y轴数据坐标也是在这个函数里修改就行了。

        然后柱状图这里没什么难点,设置数据,设置画图器改颜色,设置下刻度颜色,最后用CombinedDomainXYPlot结合在一起画出来就行了。
0 0
原创粉丝点击