`
Danker.Dai
  • 浏览: 68683 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JfreeChart 曲线图的应用

阅读更多

功能的需求:

1,将数据同时显示table和曲线图

2,在曲线图中,将某些特定的数据点,以不同的颜色显示

3,在table中的选中一行数据,同步在曲线图中高亮显示;在曲线图中单击一个数据点,同步在table中高亮显示改行数据

用法,使用JfreeChart.jar开源包
private XYDataset createxyDataset (){ //创建XYDataset

      XYSeries xySeries1 = new XYSeries("series1");//所有数据
      XYSeries xySeries2 = new XYSeries("series2");//需要特定显示的数据集

      //xySeries1.add(,)  添加数据
      //xySeries2.add(,)

      XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
      xySeriesCollection.addSeries(xySeries1);
      xySeriesCollection.addSeries(xySeries2);
      return xySeriesCollection;
}

 

private Jfreechart creatChart (){//创建Jfreechart

              Jfreechart chart = ChartFactory.createXYLineChart("Test", "X Value", "Y Value", createxyDataset(), PlotOrientation.VERTICAL, true, true, false);
                XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();

 

            //设置基本数据的曲线状态为红色,用直线连接数据点,数据点不可见
                renderer.setSeriesPaint(0, Color.RED);

                renderer.setSeriesLinesVisible(0, true);

                renderer.setSeriesShapesVisible(0, false);

 

             //设置特定数据的曲线状态为蓝色,不用直线连接数据点,数据点可见
                renderer.setSeriesPaint(1, Color.BLUE);             
                renderer.setSeriesLinesVisible(1, false);
                 renderer.setSeriesShapesVisible(1, true);
                renderer.setSeriesShape(1, new Ellipse2D.Double(-1.0, -1.0, 1.0, 1.0));


                renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
                XYPlot localXYPlot = (XYPlot) chart.getPlot();
                localXYPlot.setRenderer(renderer);

}

 

private ChartPanel getChartPanel () {

             JfreeChart chart = creatChart();
            ChartPanel   chartPanel = new ChartPanel(chart , ChartPanel.DEFAULT_WIDTH, ChartPanel.DEFAULT_HEIGHT, ChartPanel.DEFAULT_MINIMUM_DRAW_WIDTH, ChartPanel.DEFAULT_MINIMUM_DRAW_HEIGHT, ChartPanel.DEFAULT_MAXIMUM_DRAW_WIDTH, ChartPanel.DEFAULT_MAXIMUM_DRAW_HEIGHT, ChartPanel.DEFAULT_BUFFER_USED, false, false, false, false, false, true) {
                public void mouseClicked(MouseEvent e) {
                    if (!e.isMetaDown()) {
                        super.mouseClicked(e);
                        this.setAnchor(getNearestValuePoint(chartPanel.getAnchor()));// 设置为单击最chart上的点时,找最近的数据点
                    }
                }
            };
            chartPanel.setDisplayToolTips(true);
            chartPanel.setDoubleBuffered(true);

           
        }
        return chartPanel;
    }

 

 

private Point2D getNearestValuePoint (Point2D anchor) {
        Plot reportPlot = chart.getPlot();
        PlotRenderingInfo reportRenderInfo = chartPanel.getChartRenderingInfo().getPlotInfo();
        if (reportPlot instanceof XYPlot) {
            XYPlot xyPlot = (XYPlot) reportPlot;
            double hvalue = Double.NEGATIVE_INFINITY;
            ValueAxis xaxis = null;
            PlotRenderingInfo subplotInfo = null;
            subplotInfo = reportRenderInfo;
            Rectangle2D dataArea = subplotInfo.getDataArea();
            if (dataArea.contains(anchor.getX(), anchor.getY())) {
                // set the anchor value for the horizontal axis...
                xaxis = xyPlot.getDomainAxis();
                if (xaxis != null) {
                    hvalue = xaxis.java2DToValue(anchor.getX(), subplotInfo.getDataArea(), xyPlot.getDomainAxisEdge());
                }
            }
            double clickFreq = hvalue;
            if (hvalue != Double.NEGATIVE_INFINITY && xaxis != null) {

               double clickxValue; //根据数据集中,计算离单击点最近的数据点,省略计算方法,该数据点clickxValue值

               double xvalue = xaxis.valueToJava2D(clickFreq, subplotInfo.getDataArea(), xyPlot.getDomainAxisEdge());

 

                //在Chart上高亮显示单击的数据点,以在x轴上画直线的方式高亮显示
                xyPlot.clearDomainMarkers();
                ValueMarker marker = new ValueMarker(clickFreq, Color.blue, new BasicStroke(1.0f));
                xyPlot.addDomainMarker(marker, Layer.FOREGROUND);
               
                highLightTable(clickxValue);//同步显示tabel,省略该方法
                return new Point2D.Double(xvalue, anchor.getY());

             }

        }

}

 

 

 

  • 大小: 16.6 KB
  • 大小: 18.1 KB
0
5
分享到:
评论

相关推荐

    jfreechart各类曲线图JSP代码

    饼图,柱形图,曲线图!JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的...本文将通过引领读者学习在JFreeChart中饼图、柱状图和曲线图的进阶应用,来达到熟练使用JFreeChart的目的。

    JFreeChart画曲线图

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,包括曲线图、柱状图、饼图、散点图等。在本示例中,我们将重点关注如何使用JFreeChart绘制曲线图,以及如何在数据点上显示具体的数据值。 ...

    jfreechart曲线图

    在描述中提到的“jfreechart曲线图”是JFreeChart库中的一种重要图表类型,通常用于展示数据随时间变化的趋势。 在Java开发中,JFreeChart库的使用可以极大地简化数据可视化的复杂度。它提供了丰富的API,允许...

    jfreechart 柱状图、曲线图、饼图经

    JFreeChart是一款强大的Java图形库,它为开发者提供了丰富的图表类型,包括柱状图、曲线图和饼图等,使得在Java应用中展示数据变得更加直观和美观。在本篇文章中,我们将深入探讨如何利用JFreeChart来创建这些图表,...

    jfreechart 折线图 应用

    该程序为main 函数,定义了三个方法,分别是jfreechart三种实现折线图的类型,返回的是一个chart 本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以...

    java中关于JFreeChart实现实时曲线图

    在Java编程语言中,利用JFreeChart库实现实时曲线图是一种常见的数据可视化技术,尤其适用于需要实时监控或展示数据变化的应用场景。JFreeChart是一个开源的Java图表库,提供了丰富的图表类型和自定义选项,使得...

    jfreechart 曲线图 3d饼图 3d柱状图

    **JFreeChart库详解:创建3D曲线图、3D饼图和3D柱状图** JFreeChart是一个强大的Java图形库,它提供了多种图表类型,包括曲线图、饼图和柱状图,且支持2D和3D效果。本篇文章将深入探讨如何使用JFreeChart来创建这些...

    使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP

    JFreeChart是一个强大的Java库,它允许开发者创建各种类型的图表,包括曲线图、柱状图、饼状图和分布图等。在当前JS图表库盛行的时代,JFreeChart依然因其稳定性和丰富的定制性而在Java领域占有一席之地。本文将详细...

    jfreechart曲线图饼图柱状图 免费图标 图表

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图形绘制功能,包括曲线图、饼图和柱状图等。这个库是免费的,适用于各种项目,无论是商业应用还是个人学习,都能从中受益。在本篇文章中,我们将深入探讨...

    JfreeChart_sql实现时间曲线图

    在本文中,我们将深入探讨如何利用JFreeChart和SQL来实现时间曲线图,以及相关的配置和开发步骤。 首先,JFreeChart是JFree公司的一个开源项目,它提供了一系列的图形解决方案,适用于Java应用程序、Applet、...

    柱状图 圆饼图 曲线图 struts2.0 jfreechart

    JFreeChart则是一个强大的Java图表库,能够生成多种类型的图表,包括柱状图、圆饼图和曲线图,非常适合在数据可视化应用中使用。在Struts2.0中集成JFreeChart,可以为Web应用程序添加丰富的图形展示功能,让数据以...

    JFreeChart实现实时曲线图

    实现实时曲线图是JFreeChart的一个重要应用场景,本文将详细介绍JFreeChart实现实时曲线图的方法。 实时曲线图的应用场景非常广泛,如股票交易、气象监测、实时监控等。JFreeChart提供了多种方式来实现实时曲线图,...

    flex +jfreechart生成 饼状图+曲线图+柱状图(完整版)

    Flex是一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(RIA),而JFreeChart则是一个Java库,专门用于生成高质量的图表,包括饼状图、柱状图和曲线图等。 在Flex中,我们通常使用MXML和...

    jfreechart曲线图表操作样例

    这个库广泛应用于各种应用程序,包括报表、数据分析、以及Web应用等,它支持多种图表类型,如曲线图、饼图、柱状图等。在"jfreechart曲线图表操作样例"中,我们可以深入理解如何利用 JFreeChart 来创建和定制这些...

    JSP+JFreeChart 实现曲线图、柱形图

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够生成各种类型的图表,包括曲线图和柱形图。本项目结合两者,旨在实现数据可视化,使得Web应用可以...

    Java生成曲线图

    在这个场景下,JFreeChart 是一个强大的 Java 库,它为开发者提供了丰富的图表类型,包括曲线图,用于直观地展示数据趋势。下面我们将深入探讨 JFreeChart 的使用方法、特点以及如何在 Java 中生成曲线图。 首先,...

    jfreechart绘制的风速风向玫瑰图

    * jfreechart可以与多种Java应用程序集成,例如Swing、JavaFX等。 jfreechart的缺点是: * jfreechart的学习曲线较高,对于初学者来说可能不太友好。 * jfreechart的文档不够完善,需要开发者自己探索和学习。 * ...

    java jfreechart 生成图形报表 饼图,条形图,曲线图

    JFreeChart 支持多种图表类型,包括饼图、条形图和曲线图,这些图表在数据可视化中有着广泛的应用。在Java开发中,JFreeChart 提供了一个简单而灵活的API,使得开发者可以轻松地创建出丰富的图表展示数据。 首先,...

    jfreechart图形

    这个压缩包文件包含了一系列的示例,展示了JFreeChart库的强大功能,包括曲线图、柱形图、饼状图和区域图等。 1. **曲线图(Curve Chart)** 曲线图常用于展示连续的数据变化趋势,例如时间序列数据。JFreeChart提供...

    applet_+_JfreeChart_实现曲线走势图

    7. 测试与运行:运行HTML文件,浏览器会加载并执行Applet,此时曲线图应该已经在网页上正确显示。 值得注意的是,由于Java Applet的安全性和浏览器兼容性问题,现代Web开发中通常不再推荐使用Applet。若要在Web应用...

Global site tag (gtag.js) - Google Analytics