JSP页面
<% @ page language = " java " pageEncoding = " gbk " %> <% String path = request.getContextPath();String basePath = request.getScheme() + " :// " + request.getServerName() + " : " + request.getServerPort() + path + " / " ; %> <! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " > < html > < head > < base href = " <%=basePath%> " > < title > My JSP ' index.jsp ' starting page </ title > < jsp:useBean id = " barchart01 " scope = " session " class = " com.ami.chart.SeriesXY " /> </ head > < body > <% String fileName = barchart01.getImg(request.getSession(), out); String graphURL = request.getContextPath() + " /servlet/DisplayChart?filename= " + fileName; %> < br /> < img src = " <%= graphURL %> " border = " 0 " usemap = " #<%=fileName %> " /> < br /> </ body > </ html >
WEB.XML
< servlet > < servlet - name > DisplayChart </ servlet - name > < servlet - class > org.jfree.chart.servlet.DisplayChart </ servlet - class > </ servlet > < servlet - mapping > < servlet - name > DisplayChart </ servlet - name > < url - pattern >/ servlet / DisplayChart </ url - pattern > </ servlet - mapping >
Java实现代码
package com.ami.chart; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.io.PrintWriter; import javax.servlet.http.HttpSession; import javax.servlet.jsp.JspWriter; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartRenderingInfo; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.entity.StandardEntityCollection; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.ValueMarker; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.servlet.ServletUtilities; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.jfree.ui.RectangleAnchor; import org.jfree.ui.TextAnchor; public class SeriesXY { public String getImg(HttpSession session ,JspWriter out){ String filename=null; double []xydata1_0={12.8d,12.3d,12.9d,12.2d,13.3d,12.0d,12.8d,13.3d,12.9d,13.9d,12.3d,12.0d,12.8d,12.3d,11.9d,13.2d,12.3d,14.0d,12.8d,12.3d,12.9d,13.2d,13.3d,14.0d,12.8d,13.3d,11.9d,13.9d,12.3d,12.0d,19.8d,12.3d,14.9d,18.2d,12.3d,14.0d,12.8d,12.3d,12.9d,18.2d,13.3d,14.0d,12.8d,14.3d,12.9d,13.9d,12.3d,12.0d,13.8d,12.3d,11.9d,13.2d,12.3d,14.0d,12.8d,12.3d,12.9d,18.2d,16.3d,18.0d,12.8d,12.3d,19.9d,13.9d,12.3d,12.0d,12.8d,12.3d,12.9d,13.2d,12.3d,14.0d,12.8d,12.3d,12.9d,12.2d,13.3d,12.0d,12.8d,13.3d,12.9d,13.9d}; double []xydata1_1={196.0d,223.0d,230.5d,241.0d,195.8d,200.3d,200.0d,230.0d,243.5d,261.0d,259.8d,245.3d,236.0d,260.0d,225.5d,230.0d,190.8d,205.3d,196.0d,223.0d,230.5d,241.0d,195.8d,200.3d,200.0d,230.0d,243.5d,261.0d,259.8d,245.3d,236.0d,260.0d,225.5d,230.0d,190.8d,205.3d,196.0d,223.0d,230.5d,241.0d,195.8d,200.3d,200.0d,230.0d,243.5d,261.0d,259.8d,245.3d,236.0d,260.0d,225.5d,230.0d,190.8d,205.3d,196.0d,223.0d,230.5d,241.0d,195.8d,200.3d,200.0d,230.0d,243.5d,261.0d,259.8d,245.3d,236.0d,260.0d,225.5d,230.0d,190.8d,205.3d,196.0d,223.0d,230.5d,241.0d,195.8d,200.3d,200.0d,230.0d,243.5d,261.0d}; XYSeriesCollection xyCollection=new XYSeriesCollection(); XYSeries xyseries1=new XYSeries("ACompany"); for(int i=0;i<82;i++){ xyseries1.add(xydata1_0[i], xydata1_1[i]); } XYSeries xyseries2=new XYSeries("BCompany"); xyCollection.addSeries(xyseries1); //分布点状图 JFreeChart chart=ChartFactory.createScatterPlot("电压电流图", "电流","电压", xyCollection, PlotOrientation.VERTICAL, true, false, false); XYPlot plot=(XYPlot) chart.getPlot(); ValueMarker vmarker=new ValueMarker(230d);//设置分割线 vmarker.setLabel("平均电压230V"); vmarker.setLabelPaint(Color.black); vmarker.setPaint(Color.red); vmarker.setLabelFont(new Font("隶书",Font.PLAIN,10)); vmarker.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT); vmarker.setLabelTextAnchor(TextAnchor.TOP_RIGHT); plot.addRangeMarker(vmarker); ValueMarker xMarker=new ValueMarker(12.50d); xMarker.setLabel("平均电流12.50A"); xMarker.setPaint(Color.orange); xMarker.setLabelFont(new Font("隶书",Font.BOLD,10)); xMarker.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT); xMarker.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT); plot.addDomainMarker(xMarker); plot.setRangeGridlinePaint(Color.black);//设置X轴的颜色 ValueAxis yAxis=plot.getRangeAxis(); yAxis.setAutoRange(true); yAxis.setAutoRangeMinimumSize(50.0d); NumberAxis yNumber=(NumberAxis) plot.getRangeAxis(); yNumber.setTickUnit(new NumberTickUnit(50d)); yAxis.setLowerBound(50.0d); plot.setRangeAxis(yAxis); ValueAxis xAxis=plot.getDomainAxis(); xAxis.setAutoRange(false); NumberAxis numberaxis=(NumberAxis)plot.getDomainAxis(); numberaxis.setTickUnit(new NumberTickUnit(0.1D));//设置X轴跨度每次增加1 xAxis.setUpperBound(14.2d); xAxis.setLowerBound(11.8d); XYItemRenderer itRender=plot.getRenderer(); try { PrintWriter pw=new PrintWriter(out); StandardEntityCollection sec = new StandardEntityCollection(); ChartRenderingInfo info = new ChartRenderingInfo(sec); filename=ServletUtilities.saveChartAsJPEG(chart,650, 400,null, session); ChartUtilities.writeImageMap(pw, filename,info, true); } catch (Exception e) { e.printStackTrace(); } return filename; }}
效果图