`
263229365
  • 浏览: 472113 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JfreeChart 散点图

 
阅读更多

 

用JfreeChart画散点图

 首先,看画图的API,参数有:

ChartFactory.createScatterPlot(),其中,有一个xydataset,那么,我们先要知道这个xydataset是什么结构的,再看所需xydataset,散点图,也就是单独画出点,也就是一个二维数据了,x ,y坐标嘛!

那么,先做好准备工作,第一步,拿数据,这就不用啰嗦了,就是得到一个List也好,Set也行。

 

第二步,加载到数据集:

Java代码   收藏代码
  1. /** 
  2.  *  
  3.  * @param xydatalist 
  4.  * @param bloods 
  5.  * @return 
  6.  */  
  7.     public static XYDataset createxydataset(List<PressureBean> xydatalist,  
  8.             String bloods) {  
  9.         DefaultXYDataset xydataset = new DefaultXYDataset();  
  10.   
  11.         int size = xydatalist.size();  
  12.         double[][] datas = new double[2][size];  
  13.         for (int i = 0; i < size; i++) {  
  14.             PressureBean pres = xydatalist.get(i);  
  15.             int sys = pres.getSyspress();//收缩压  
  16.             int dia = pres.getDiapress();//舒张压  
  17.   
  18.             datas[0][i] = sys;  
  19.             datas[1][i] = dia;  
  20.         }  
  21.   
  22.         xydataset.addSeries(bloods, datas);  
  23.   
  24.         return xydataset;  
  25.   
  26.     }  

 

下一步,另外一个准备工作,画图方法:

Java代码   收藏代码
  1. public static JFreeChart createChart(XYDataset xydataset,  
  2.             String bloodcattile, String shou, String shu, String nobloodData,  
  3.             String bloods, String nomal, String fore, String one, String two,  
  4.             List<PressureBean> list, Log log) {  
  5.   
  6.         // 有可能用户在后面的版本中故意输入不正常数值,但是为了保证图片画图的完整,这里先计算  
  7.         // 用户血压值的最大值。  
  8.         int maxpress = 160;  
  9.         int addmax = 20;  
  10.   
  11.         if (list != null && list.size() > 0) {  
  12.   
  13.             Iterator<PressureBean> it = list.iterator();  
  14.             while (it.hasNext()) {  
  15.                 PressureBean pres = it.next();  
  16.                   
  17.                 if (maxpress < pres.getDiapress()) {  
  18.                     maxpress = pres.getDiapress();  
  19.                 }  
  20.   
  21.                 if (maxpress < pres.getSyspress()) {  
  22.                     maxpress = pres.getSyspress();  
  23.                 }  
  24.             }  
  25.   
  26.             maxpress += addmax;  
  27.   
  28.   
  29.             log.info("high press value is =" + maxpress);  
  30.   
  31.         }  
  32.   
  33.         JFreeChart jfreechart = ChartFactory.createScatterPlot(bloodcattile,  
  34.                 shou, shu, xydataset, PlotOrientation.VERTICAL, truefalse,  
  35.                 false);  
  36.         jfreechart.setBackgroundPaint(Color.white);  
  37.         jfreechart.setBorderPaint(Color.GREEN);  
  38.         jfreechart.setBorderStroke(new BasicStroke(1.5f));  
  39.         XYPlot xyplot = (XYPlot) jfreechart.getPlot();  
  40.         xyplot.setNoDataMessage(nobloodData);  
  41.         xyplot.setNoDataMessageFont(new Font("", Font.BOLD, 14));  
  42.         xyplot.setNoDataMessagePaint(new Color(87149117));  
  43.   
  44.         xyplot.setBackgroundPaint(new Color(255253246));  
  45.         ValueAxis vaaxis = xyplot.getDomainAxis();  
  46.         vaaxis.setAxisLineStroke(new BasicStroke(1.5f));  
  47.   
  48.         ValueAxis va = xyplot.getDomainAxis(0);  
  49.         va.setAxisLineStroke(new BasicStroke(1.5f));  
  50.   
  51.         va.setAxisLineStroke(new BasicStroke(1.5f)); // 坐标轴粗细  
  52.         va.setAxisLinePaint(new Color(215215215)); // 坐标轴颜色  
  53.         xyplot.setOutlineStroke(new BasicStroke(1.5f)); // 边框粗细  
  54.         va.setLabelPaint(new Color(101010)); // 坐标轴标题颜色  
  55.         va.setTickLabelPaint(new Color(102102102)); // 坐标轴标尺值颜色  
  56.         ValueAxis axis = xyplot.getRangeAxis();  
  57.         axis.setAxisLineStroke(new BasicStroke(1.5f));  
  58.   
  59.         XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot  
  60.                 .getRenderer();  
  61.         xylineandshaperenderer.setSeriesOutlinePaint(0, Color.WHITE);  
  62.         xylineandshaperenderer.setUseOutlinePaint(true);  
  63.         NumberAxis numberaxis = (NumberAxis) xyplot.getDomainAxis();  
  64.         numberaxis.setAutoRangeIncludesZero(false);  
  65.         numberaxis.setTickMarkInsideLength(2.0F);  
  66.         numberaxis.setTickMarkOutsideLength(0.0F);  
  67.         numberaxis.setAxisLineStroke(new BasicStroke(1.5f));  
  68.         numberaxis.setUpperBound(maxpress);  
  69.         numberaxis.setLowerBound(60);//最小值设置为60  
  70.         NumberAxis numberaxis1 = (NumberAxis) xyplot.getRangeAxis();  
  71.         numberaxis1.setTickMarkInsideLength(2.0F);  
  72.         numberaxis1.setTickMarkOutsideLength(0.0F);  
  73.         numberaxis1.setUpperBound(105d);  
  74.         numberaxis1.setLowerBound(35);  
  75.         numberaxis1.setAxisLineStroke(new BasicStroke(1.5f));  
  76.   
  77.         // if (xydataset != null) {  
  78.         XYBoxAnnotation box = new XYBoxAnnotation(008959); //正常血压所在区域内边界  
  79.         XYBoxAnnotation box1 = new XYBoxAnnotation(0011979);//高血压前期所在区域内边界  
  80.         XYBoxAnnotation box2 = new XYBoxAnnotation(0013989);//高血压一期所在区域内边界  
  81.         XYBoxAnnotation box3 = new XYBoxAnnotation(0015999);//高血压二期所在区域内边界  
  82.         XYTextAnnotation text1 = new XYTextAnnotation(nomal, 7062.5);//标识“正常”  
  83.         XYTextAnnotation text = new XYTextAnnotation(fore, 7082.5);//“高血压前期”  
  84.         XYTextAnnotation text2 = new XYTextAnnotation(one, 7091.5);//“高血压一期”  
  85.         XYTextAnnotation text3 = new XYTextAnnotation(two, 70101.5);//“高血压二期”  
  86.   
  87.           
  88.         //将上面的边界线条,说明文字加入到xyplot中。  
  89.         xyplot.addAnnotation(box);  
  90.         xyplot.addAnnotation(box1);  
  91.         xyplot.addAnnotation(box2);  
  92.         xyplot.addAnnotation(box3);  
  93.   
  94.         xyplot.addAnnotation(text);  
  95.         xyplot.addAnnotation(text1);  
  96.         xyplot.addAnnotation(text2);  
  97.         xyplot.addAnnotation(text3);  
  98.         // }  
  99.         return jfreechart;  
  100.     }  

 

最后一步,返回图片URL

Java代码   收藏代码
  1. public static void drawScatterChart(IrisIoInterface io, Log log,  
  2.             XYDataset xydataSet, String title, String shou, String shu,  
  3.             String nodata, String boolds, String nomal, String fore,  
  4.             String one, String two, List<PressureBean> list) {  
  5.   
  6.         JFreeChart chart = createChart(xydataSet, title, shou, shu, nodata,  
  7.                 boolds, nomal, fore, one, two, list, log);  
  8.   
  9.         HttpServletRequest request = io.getRequest();  
  10.         String filename = "";  
  11.         String graphURL = "";  
  12.         try {  
  13.             filename = ServletUtilities.saveChartAsPNG(chart, 400300null,  
  14.                     io.getSession());  
  15.             graphURL = request.getContextPath() + "/displayChart?filename="  
  16.                     + filename;  
  17.         } catch (IOException e) {  
  18.             // TODO Auto-generated catch block  
  19.             e.printStackTrace();  
  20.             log.error(e);  
  21.         }  
  22.   
  23.         io.setData("filename", filename, BeanShare.BEAN_SHARE_REQUEST);  
  24.         io.setData("scatterurl", graphURL, BeanShare.BEAN_SHARE_REQUEST);  
  25.   
  26.     }  

 

效果图:


Copy:
分享到:
评论

相关推荐

    jfreechart 折线图的一个例子

    **JFreeChart 折线图实例详解** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据分析和展示场景。在这个例子中,我们将深入探讨如何使用 JFreeChart ...

    jfreechart折线图demo

    **JFreeChart 折线图 Demo 知识点详解** JFreeChart 是一个用 Java 编写的开源图表库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据可视化需求。在这个“jfreechart折线图demo”中,我们将...

    jfreechart 折线图 应用

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

    jfreechart折线图读取数据库数据的显示(mysql)

    在Java编程环境中,JFreeChart库是一个非常强大的工具,用于创建各种类型的图表,包括折线图、柱状图、饼图等。本教程将详细讲解如何利用JFreeChart结合MySQL数据库来生成动态折线图,展示数据库中的数据。 首先,...

    jfreechart 漂亮的折线图

    利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境

    jfreechart折线图.zip

    ValueStack vs=(ValueStack)request.getAttribute("struts.valueStack"); List list=(List)vs.findValue("list"); Iterator itor=list.iterator(); while(itor.hasNext()) { ... &lt;%} %&gt;

    jfreechart 堆栈柱状图跟折线图结合拼接

    jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707

    JFreeChart 折线、柱状组合图

    public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 &lt;!--begin 维优特例 --&gt; ...

    JSP利用JFreeChart生成折线图

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...

    JFreeChart折线图的生成方法

    JFreeChart是一款功能强大且广泛使用的图表类库,它可以生成多种类型的图表,如饼图、柱状图、散点图、时序图、甘特图等等。今天,我们将详细介绍JFreeChart折线图的生成方法。 首先,我们需要了解JFreeChart的基本...

    JFreeChart饼图、折线图等资料学习

    JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括饼图、折线图、柱状图、散点图以及更多其他类型的图表。这个资料包包含了JFreeChart的核心库(jfreechart-1.0.16.jar)和其依赖库JCommon...

    JFreeChart双Y轴折线图实例,可以直接运行

    JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...

    jfreechart 折线图、饼状图、柱状图

    JFreeChart是由David Gilbert开发的一个开源项目,它支持生成各种复杂的2D图表,如折线图、柱状图、饼状图、散点图、甘特图、热力图等。它的设计目标是提供一个可扩展且易于使用的图表解决方案,可以方便地集成到...

    jfreechart根据24小时数据画折线图

    ### jfreechart根据24小时数据画折线图 #### 一、jfreechart简介 jfreechart是一款基于Java的开源图表绘制库,它能够帮助开发者轻松地在应用程序中生成各种图表,包括折线图、饼图、柱状图等。它的主要优势在于...

    jfreechart绘制折线图(平面和3D)

    JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括折线图、柱状图、饼图、散点图等。在本主题中,我们将深入探讨如何使用JFreeChart来绘制平面和3D的折线图。 首先,让我们了解折线图的基本...

    jfreechart 生成折线图,饼图,柱状图,堆栈柱状图

    JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...

    jfreechart绘制的风速风向玫瑰图

    jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart的基本结构。jfreechart的核心是...

    JFreeChart 让X轴的标题竖着显示

    在Java编程环境中,JFreeChart库是一个非常强大的工具,用于创建各种类型的图表,如柱状图、饼图、线图等。如果你需要让X轴的标题在图表中竖直显示,而不是默认的水平显示,这通常是为了更好地适应有限的空间或者...

    JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图

    JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...

Global site tag (gtag.js) - Google Analytics