`
zhaobing315
  • 浏览: 231983 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何利用JStockChart生成金融时序图

 
阅读更多

1. 环境要求
    需要JDK 1.5或更高版本。

2. 下载与安装
    从JStockChart的站点中下载它的最新版本,当前版本是0.4.2。
    解压JStockChart的zip文件(jstockchart-0.4.2.zip)后,将jstockchart目录中的jstockchart-0.4.2.jar和jstockchart/lib目录中的jcommon-1.0.16.jar和jfreechart-1.0.13.jar加到classpath中。

3. 示例
    在JStockChart的发行包中,有一个demo目录。该目录包含了一个简单的例子,展示了如何利用JStockChart去生成时序图。demo目录中有一个Ant脚本build.xml,在该目录下执行命令ant即可运行该示例程序。下面是该示例的关键代码及其说明。

public class TimeseriesChartDemo {

    public static void main(String[] args) throws IOException {
        // 

        // 创建一个包含TimeseriesItem的List实例。
        // 在此处,通过查询db4o的数据库文件,直接获得该List.
        // 注意:所有的数据,都必须在"同一天"内。
        List data = ;

        // 创建SegmentedTimeline实例,表示时间区间"00:00-11:30,13:00-24:00"(即24小时中空缺了"11:31-12:59"这段时间)。
        SegmentedTimeline timeline = new SegmentedTimeline(
                SegmentedTimeline.MINUTE_SEGMENT_SIZE, 1351, 89);
        timeline.setStartTime(SegmentedTimeline.firstMondayAfter1900()
                + 780 * SegmentedTimeline.MINUTE_SEGMENT_SIZE);

        // 创建TimeseriesDataset实例,时间间隔为1分钟。
        TimeseriesDataset dataset = new TimeseriesDataset(Minute.class, 1, timeline, true);
        // 向dataset中加入TimeseriesItem的List。
        dataset.addDataItems(data);

        // 创建逻辑价格坐标轴。指定中间价为21,显示9个坐标值,坐标值的格式为".00"。
        CentralValueAxis fixedPriceAxis = new CentralValueAxis(new Double("21"), new Range(
                dataset.getMinPrice().doubleValue(), dataset.getMaxPrice().doubleValue()),
                9, new DecimalFormat(".00"));
        // 创建价格区域
        PriceArea priceArea = new PriceArea(fixedPriceAxis);

        // 创建逻辑量坐标轴。显示5个坐标值,坐标值的格式为"0"。
        FixedNumberAxis fixedVolumeAxis = new FixedNumberAxis(new Range(dataset
                .getMinVolume().doubleValue(), dataset.getMaxVolume()
                .doubleValue()), 5, new DecimalFormat("0"));
        // 创建量区域
        VolumeArea volumeArea = new VolumeArea(fixedVolumeAxis);

        // 创建时序图区域
        TimeseriesArea timeseriesArea = new TimeseriesArea(priceArea,
                volumeArea, createFixedDateAxis(DateUtils.createDate(2008, 1, 1)));

        // 通过JStockChartFactory的工厂方法生成JFreeChart实例。
        // 指定了该图的标题为"Timeseries Chart Demo",并且不生成图例(legend)。
        JFreeChart jfreechart = JStockChartFactory.createTimeseriesChart(
                "Timeseries Chart Demo", dataset, timeline, timeseriesArea, false);

        

        // 创建图像文件。图像格式为PNG,长为545,宽为300。
        ChartUtilities.saveChartAsPNG(new File(imageFile), jfreechart, 545, 300);
    }

    // 指定时期坐标轴中的逻辑坐标。
    private static FixedDateAxis createFixedDateAxis(Date baseDate) {
        FixedDateAxis fixedDateAxis = new FixedDateAxis(baseDate,
                new SimpleDateFormat("HH:mm"));
        fixedDateAxis.addDateTick("09:30", TickAlignment.START);
        fixedDateAxis.addDateTick("10:00");
        fixedDateAxis.addDateTick("10:30");
        fixedDateAxis.addDateTick("11:00");
        fixedDateAxis.addDateTick("11:30", TickAlignment.END);
        fixedDateAxis.addDateTick("13:00", TickAlignment.START);
        fixedDateAxis.addDateTick("13:30");
        fixedDateAxis.addDateTick("14:00");
        fixedDateAxis.addDateTick("14:30");
        fixedDateAxis.addDateTick("15:00", TickAlignment.END);
        return fixedDateAxis;
    }
}
 运行该示例程序后,可以生成如下图片:

jstockchart-timeseries

4. 定制图表
    由于JFreeChart具有高度的可定制性,所以当生成了JFreeChart实例后,你可以从中获取图表中的各个元素,如Plot,然后再定制它们的属性。详细信息请参见JFreeChart的站点和论坛。
    另外,在创建JStockChart的XXXArea对象时,也可以直接定制若干属性。如,通过PriceArea类,可以设置价格线的颜色(PriceArea.setPriceColor),均线的颜色(PriceArea.setAverageColor);是否显示均线(PriceArea.setAverageVisible);是否显示涨跌幅(PriceArea.setRateVisible);...。详细信息请参见JStockChart的API文档。

分享到:
评论
2 楼 genius 2019-04-29  
JStockChart 和 JFreeChart的关系是什么啊?
1 楼 liaocongkang1992 2016-07-13  
你好,  我最近也需要在后台绘制股票分时图,但是我有一个疑问,  假如说现在只有九点半到十一点半的数据,  如何把后面一点半到三点半的图位置空出来呢 ? 现在九点半到十一点半的数据已经占满整张图了

相关推荐

    eclipse下生成Java类图和时序图

    本文将详细介绍如何在Eclipse集成开发环境中生成Java类图和时序图,以及如何利用提供的资源来实现这一目标。 首先,我们需要了解Eclipse中的UML支持。Eclipse本身并不内置UML建模功能,但可以通过安装插件来扩展这...

    eclipse画时序图插件plantuml

    PlantUML是一个开源项目,它可以生成各种UML图形,包括时序图、类图、用例图等。通过简单的文本描述语言,开发者可以快速编写出图形代码,然后由PlantUML解析并生成相应的图形。在Eclipse中集成PlantUML插件,使得...

    教你用ChatGPT一键生成时序图、类图、流程图、状态图以及用例图

    本文将深入探讨如何利用ChatGPT,一个由人工智能公司OpenAI开发的语言模型,来快速生成五种常见的图表:时序图、类图、流程图、状态图以及用例图。这些图表在软件工程、项目管理和数据分析等领域广泛应用,帮助...

    Eclipse导出类图时序图(亲测),安装截图

    在本文中,我们将深入探讨如何在Eclipse集成开发环境中导出类图和时序图,以及如何确保这一过程在最新版本的Eclipse中...通过正确安装和使用UML插件,可以有效地利用类图和时序图提高代码的可读性和项目的可维护性。

    EC11旋转编码器时序图.rar_EC11旋转编码器_ec11时序图_编码器时序_编码器时序图_逻辑分析仪

    本资料"EC11旋转编码器时序图.rar"包含了一定位对一脉冲和两定位对一脉冲两种类型的EC11编码器在正转、反转以及连续转动时的时序图。 首先,我们需要理解编码器的基本工作原理。EC11编码器内部通常包含一个光学或...

    android 时序图

    为了创建Android时序图,开发者可以选择使用专门的建模工具,如PlantUML、StarUML等,也可以利用代码生成器如Java代码自动生成时序图。对于压缩包中的"Shixutu"文件,可能是包含预定义时序图模板或者样例的资源,...

    Bitmap生成时序图

    这是博文《BitmapFactory.decodeResource VS BitmapFactory.decodeStream》中的时序图,发现上传后,看不清楚,所以上传在这里。

    highCharts-时序图

    通过以上步骤,你可以利用HighCharts创建出功能强大且美观的时序图,有效地呈现实时数据的变化。在提供的压缩包文件"highCharts(时序图)"中,可能包含了示例代码、数据文件以及样式资源,你可以参考这些资源进行学习...

    时序图生成器TimeGen

    时序图生成利器,再也不用visio或者word画时序图了,特别好用,推荐

    网上书店时序图和协作图建模

    在IT行业中,UML(统一建模语言)是一种标准的建模工具,用于软件开发的可视化表示,它包括多种图表,如类图、时序图和协作图等。本实验重点在于理解和应用时序图与协作图进行系统分析,这两种图在描述系统动态行为...

    教你如何看懂时序图

    时序图,全称为顺序图或序列图,是UML(统一建模语言)中的一种图形表示法,主要用于描述系统中的对象如何交互以及在时间上的顺序。它通过可视化的方式展现了对象间的动态协作关系,帮助我们理解系统的行为。时序图...

    andytiming画时序图小软件

    2. timing.bmp、demo.bmp:这是软件生成的时序图的位图文件,用户可以将完成的时序图导出为图像,便于分享或嵌入到其他文档中。 3. AndyTiming.exe:这是软件的可执行文件,双击即可启动软件,开始绘制时序图。 4. ...

    如何看懂数字电路时序图

    在深入探讨如何理解数字电路中的时序图之前,我们首先需要明确时序图的基本概念及其在数字电子系统设计中的重要性。时序图是一种图形化的表示方法,用于展示数字电路中信号随时间变化的情况,特别是在涉及多信号交互...

    网上购书uml用例图时序图

    总之,网上购书系统的用例图和时序图是系统分析和设计的重要部分,它们帮助我们理解系统的核心功能和用户交互流程,进而指导系统的实现和测试。通过详细描绘这些图,我们可以确保系统满足各种用户的需求,并且能够...

    Timegen3.3 时序图 电路时序图

    5. **报告生成**:Timegen3.3还提供自动报告生成功能,将时序图和相关的参数分析整理成规范的文档,方便技术交流和存档。 6. **兼容性**:软件能够导出多种格式的文件,如图片、PDF等,便于在其他文档或报告中插入...

    文件上传、文件下载时序图(使用Visio专业绘图软件专业绘制).rar

    该资源中包含两个“时序图”,是使用专业绘图软件Visio绘制的。这两个时序图都很详细,是针对代码进行绘制的,可以用于计算机毕业设计的论文中对于“系统详细设计”部分中时序图,总之是很好的一个资源!建议需要的...

    UML时序图画法,有详细步骤和例子

    uml时序图画法,项目过程中到的。 UML时序图画法,有详细步骤和例子

    时序图示例

    2. 自动化:时序图的自动化将变得更加普遍,帮助开发者快速生成和维护时序图。 3. 集成化:时序图的集成化将变得更加普遍,帮助开发者将时序图与其他UML图形集成。 时序图是一种强大的UML图形,用于描述系统中的...

    uml建模时序图

    **一、时序图简介** 时序图,全称为序列图或顺序图,是统一建模语言(UML)中的重要图表类型,主要用于描述系统中各个对象如何按照时间顺序进行交互。这种图清晰地展现了对象之间的消息传递,帮助开发者理解系统的...

    时序图与自相关图.docx

    时序图与自相关图的知识点解读 时序图是指对时间序列数据的可视化表示,用于展示时间序列数据的变化趋势和规律性。时序图可以帮助我们发现时间序列数据中的周期性、季节性和趋势性等特征。 在时序图绘制中,我们...

Global site tag (gtag.js) - Google Analytics