用JfreeChart画散点图
首先,看画图的API,参数有:
ChartFactory.createScatterPlot(),其中,有一个xydataset,那么,我们先要知道这个xydataset是什么结构的,再看所需xydataset,散点图,也就是单独画出点,也就是一个二维数据了,x ,y坐标嘛!
那么,先做好准备工作,第一步,拿数据,这就不用啰嗦了,就是得到一个List也好,Set也行。
第二步,加载到数据集:
-
-
-
-
-
-
- public static XYDataset createxydataset(List<PressureBean> xydatalist,
- String bloods) {
- DefaultXYDataset xydataset = new DefaultXYDataset();
-
- int size = xydatalist.size();
- double[][] datas = new double[2][size];
- for (int i = 0; i < size; i++) {
- PressureBean pres = xydatalist.get(i);
- int sys = pres.getSyspress();
- int dia = pres.getDiapress();
-
- datas[0][i] = sys;
- datas[1][i] = dia;
- }
-
- xydataset.addSeries(bloods, datas);
-
- return xydataset;
-
- }
下一步,另外一个准备工作,画图方法:
- public static JFreeChart createChart(XYDataset xydataset,
- String bloodcattile, String shou, String shu, String nobloodData,
- String bloods, String nomal, String fore, String one, String two,
- List<PressureBean> list, Log log) {
-
-
-
- int maxpress = 160;
- int addmax = 20;
-
- if (list != null && list.size() > 0) {
-
- Iterator<PressureBean> it = list.iterator();
- while (it.hasNext()) {
- PressureBean pres = it.next();
-
- if (maxpress < pres.getDiapress()) {
- maxpress = pres.getDiapress();
- }
-
- if (maxpress < pres.getSyspress()) {
- maxpress = pres.getSyspress();
- }
- }
-
- maxpress += addmax;
-
-
- log.info("high press value is =" + maxpress);
-
- }
-
- JFreeChart jfreechart = ChartFactory.createScatterPlot(bloodcattile,
- shou, shu, xydataset, PlotOrientation.VERTICAL, true, false,
- false);
- jfreechart.setBackgroundPaint(Color.white);
- jfreechart.setBorderPaint(Color.GREEN);
- jfreechart.setBorderStroke(new BasicStroke(1.5f));
- XYPlot xyplot = (XYPlot) jfreechart.getPlot();
- xyplot.setNoDataMessage(nobloodData);
- xyplot.setNoDataMessageFont(new Font("", Font.BOLD, 14));
- xyplot.setNoDataMessagePaint(new Color(87, 149, 117));
-
- xyplot.setBackgroundPaint(new Color(255, 253, 246));
- ValueAxis vaaxis = xyplot.getDomainAxis();
- vaaxis.setAxisLineStroke(new BasicStroke(1.5f));
-
- ValueAxis va = xyplot.getDomainAxis(0);
- va.setAxisLineStroke(new BasicStroke(1.5f));
-
- va.setAxisLineStroke(new BasicStroke(1.5f));
- va.setAxisLinePaint(new Color(215, 215, 215));
- xyplot.setOutlineStroke(new BasicStroke(1.5f));
- va.setLabelPaint(new Color(10, 10, 10));
- va.setTickLabelPaint(new Color(102, 102, 102));
- ValueAxis axis = xyplot.getRangeAxis();
- axis.setAxisLineStroke(new BasicStroke(1.5f));
-
- XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot
- .getRenderer();
- xylineandshaperenderer.setSeriesOutlinePaint(0, Color.WHITE);
- xylineandshaperenderer.setUseOutlinePaint(true);
- NumberAxis numberaxis = (NumberAxis) xyplot.getDomainAxis();
- numberaxis.setAutoRangeIncludesZero(false);
- numberaxis.setTickMarkInsideLength(2.0F);
- numberaxis.setTickMarkOutsideLength(0.0F);
- numberaxis.setAxisLineStroke(new BasicStroke(1.5f));
- numberaxis.setUpperBound(maxpress);
- numberaxis.setLowerBound(60);
- NumberAxis numberaxis1 = (NumberAxis) xyplot.getRangeAxis();
- numberaxis1.setTickMarkInsideLength(2.0F);
- numberaxis1.setTickMarkOutsideLength(0.0F);
- numberaxis1.setUpperBound(105d);
- numberaxis1.setLowerBound(35);
- numberaxis1.setAxisLineStroke(new BasicStroke(1.5f));
-
-
- XYBoxAnnotation box = new XYBoxAnnotation(0, 0, 89, 59);
- XYBoxAnnotation box1 = new XYBoxAnnotation(0, 0, 119, 79);
- XYBoxAnnotation box2 = new XYBoxAnnotation(0, 0, 139, 89);
- XYBoxAnnotation box3 = new XYBoxAnnotation(0, 0, 159, 99);
- XYTextAnnotation text1 = new XYTextAnnotation(nomal, 70, 62.5);
- XYTextAnnotation text = new XYTextAnnotation(fore, 70, 82.5);
- XYTextAnnotation text2 = new XYTextAnnotation(one, 70, 91.5);
- XYTextAnnotation text3 = new XYTextAnnotation(two, 70, 101.5);
-
-
-
- xyplot.addAnnotation(box);
- xyplot.addAnnotation(box1);
- xyplot.addAnnotation(box2);
- xyplot.addAnnotation(box3);
-
- xyplot.addAnnotation(text);
- xyplot.addAnnotation(text1);
- xyplot.addAnnotation(text2);
- xyplot.addAnnotation(text3);
-
- return jfreechart;
- }
最后一步,返回图片URL
- public static void drawScatterChart(IrisIoInterface io, Log log,
- XYDataset xydataSet, String title, String shou, String shu,
- String nodata, String boolds, String nomal, String fore,
- String one, String two, List<PressureBean> list) {
-
- JFreeChart chart = createChart(xydataSet, title, shou, shu, nodata,
- boolds, nomal, fore, one, two, list, log);
-
- HttpServletRequest request = io.getRequest();
- String filename = "";
- String graphURL = "";
- try {
- filename = ServletUtilities.saveChartAsPNG(chart, 400, 300, null,
- io.getSession());
- graphURL = request.getContextPath() + "/displayChart?filename="
- + filename;
- } catch (IOException e) {
-
- e.printStackTrace();
- log.error(e);
- }
-
- io.setData("filename", filename, BeanShare.BEAN_SHARE_REQUEST);
- io.setData("scatterurl", graphURL, BeanShare.BEAN_SHARE_REQUEST);
-
- }
效果图:
Copy:
分享到:
相关推荐
**JFreeChart 折线图实例详解** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据分析和展示场景。在这个例子中,我们将深入探讨如何使用 JFreeChart ...
**JFreeChart 折线图 Demo 知识点详解** JFreeChart 是一个用 Java 编写的开源图表库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据可视化需求。在这个“jfreechart折线图demo”中,我们将...
该程序为main 函数,定义了三个方法,分别是jfreechart三种实现折线图的类型,返回的是一个chart 本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以...
在Java编程环境中,JFreeChart库是一个非常强大的工具,用于创建各种类型的图表,包括折线图、柱状图、饼图等。本教程将详细讲解如何利用JFreeChart结合MySQL数据库来生成动态折线图,展示数据库中的数据。 首先,...
利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境
ValueStack vs=(ValueStack)request.getAttribute("struts.valueStack"); List list=(List)vs.findValue("list"); Iterator itor=list.iterator(); while(itor.hasNext()) { ... <%} %>
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...
JFreeChart是一款功能强大且广泛使用的图表类库,它可以生成多种类型的图表,如饼图、柱状图、散点图、时序图、甘特图等等。今天,我们将详细介绍JFreeChart折线图的生成方法。 首先,我们需要了解JFreeChart的基本...
JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括饼图、折线图、柱状图、散点图以及更多其他类型的图表。这个资料包包含了JFreeChart的核心库(jfreechart-1.0.16.jar)和其依赖库JCommon...
JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...
JFreeChart是由David Gilbert开发的一个开源项目,它支持生成各种复杂的2D图表,如折线图、柱状图、饼状图、散点图、甘特图、热力图等。它的设计目标是提供一个可扩展且易于使用的图表解决方案,可以方便地集成到...
### jfreechart根据24小时数据画折线图 #### 一、jfreechart简介 jfreechart是一款基于Java的开源图表绘制库,它能够帮助开发者轻松地在应用程序中生成各种图表,包括折线图、饼图、柱状图等。它的主要优势在于...
JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括折线图、柱状图、饼图、散点图等。在本主题中,我们将深入探讨如何使用JFreeChart来绘制平面和3D的折线图。 首先,让我们了解折线图的基本...
JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...
jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart的基本结构。jfreechart的核心是...
在Java编程环境中,JFreeChart库是一个非常强大的工具,用于创建各种类型的图表,如柱状图、饼图、线图等。如果你需要让X轴的标题在图表中竖直显示,而不是默认的水平显示,这通常是为了更好地适应有限的空间或者...
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...