`
Danker.Dai
  • 浏览: 67309 次
  • 性别: 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的简单应用,画曲线图,多条曲线,在数据点显示数据值。包含所需的jar文件。

    jfreechart 折线图 应用

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

    Jfreechart

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

    JFreeChart使用教程(中文).pdf

    JFreeChart中饼图、柱状图和曲线图的进阶应用,来达到熟练使用JFreeChart的目的。 1. JFreeChart JFreeChart 是开放源代码的免费软件,但是它的支持文档需要付费才 能得到。其下载地址为: ...

    JFreeChart使用教程(含下载、安装)

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

    JFreeChart使用教程 中文完整版PDF

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

    java/jsp图表生成-JfreeChart套装(源码包,javadoc,安装手册,本人精选简明教程)

    柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得 到广泛的应用。 JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如 下: 1...

    JFreeChart实际应用说明

    各个报表介绍,以及源代码相关属性设置说明

    JFreeChart资源文件

    JFREECHART:开源项目,主要用来生成静态图表,如饼图、柱状图、曲线图、区域图等。纯JAVA应用与实现,可继承到WEB/SWING/SWT等,方便集成到报表中

    JFreeChart教程(一).doc

    JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。

    用JFreeChart增强JSP报表的用户体验

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

    jFreeChart使用实例

    JAVA简单的图表图形绘制插件,易学易懂,jFreeChart使用实例清晰介绍整个插件使用,附加介绍web应用

    JFreeChart中文API .doc

    JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。

    jfreechart示例

    本示例是过去接触jfreechart时查找的资料。原著的地址忘记了,先在此表示感谢。个人觉得这个示例写得不错。...本例只是jfreechart比较简单的应用,可以帮助理解思想。希望对要接触jfreechart的朋友有所帮助

    JFreeChart实例

    这个我用JFreeChart写的一个实际例子,应用过大型项目,效果很好,JAR也在里面,有曲线图,饼图,柱图等

    JFreeChart用户开发指南1.0.6(中文).doc

    JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。

    基于B_S的模拟股票系统

    JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。...

Global site tag (gtag.js) - Google Analytics