jfc在jsp页面画图,不将图片存在服务器端,只存入会话session。其中主要用到jfc的一个servlet类。
<%@ page contentType="text/html;charset=gb2312" errorPage="../common/error.jsp" %> <%@ page import="dqz.jsp.*" %> <%@ page import="java.sql.*" %> <%@ page import="javax.sql.*" %> <%@ page import="javax.naming.*" %> <%@ include file="../common/config.jsp"%> <%@ include file="reporter_session.jsp"%> <%@ page import=" org.jfree.chart.servlet.ServletUtilities, java.awt.Font, java.awt.Color, org.jfree.chart.ChartFactory, org.jfree.chart.ChartFrame, org.jfree.chart.JFreeChart, org.jfree.chart.StandardChartTheme, org.jfree.chart.plot.CategoryPlot, org.jfree.chart.plot.PlotOrientation, org.jfree.data.category.CategoryDataset, org.jfree.data.category.DefaultCategoryDataset, org.jfree.chart.ChartUtilities, org.jfree.chart.axis.CategoryAxis, org.jfree.chart.axis.NumberAxis, org.jfree.chart.axis.ValueAxis, org.jfree.chart.labels.StandardCategoryItemLabelGenerator, org.jfree.chart.renderer.category.BarRenderer, org.jfree.chart.title.TextTitle, java.io.FileOutputStream, java.io.IOException, java.io.PrintWriter, java.util.ArrayList, java.util.HashMap, java.util.List, java.util.Map, java.text.DecimalFormat, java.text.NumberFormat, java.io.FileOutputStream, java.io.IOException, java.io.PrintWriter, java.sql.Connection, java.sql.DriverManager, java.sql.PreparedStatement, java.sql.ResultSet, java.sql.SQLException, java.util.ArrayList, java.util.List, org.jfree.chart.servlet.ServletUtilities, java.util.Map, org.jfree.chart.labels.StandardPieSectionLabelGenerator, org.jfree.chart.labels.StandardPieToolTipGenerator, org.jfree.chart.plot.PiePlot3D, org.jfree.data.general.DefaultPieDataset, org.jfree.data.general.PieDataset, org.jfree.chart.title.LegendTitle "%> //===========================直方图测试开始=================================================== DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(610, "广州", "猪肉"); dataset.addValue(220, "广州", "牛肉"); dataset.addValue(530, "广州", "鸡肉"); dataset.addValue(340, "广州", "鱼肉"); JFreeChart mBarChart = ChartFactory.createBarChart3D("肉类销量统计图", "肉类", "销量", dataset, PlotOrientation.VERTICAL, false, false, false); //图表标题设置 TextTitle mTextTitle = mBarChart.getTitle(); mTextTitle.setFont(new Font("黑体", Font.BOLD, 20)); //mBarChart.setTitle(new TextTitle("学校人员分布图",new Font("黑体", Font.BOLD, 20))); //图表图例设置 LegendTitle mLegend = mBarChart.getLegend(); if(mLegend != null) mLegend.setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15)); //mBarChart.getLegend().setItemFont(new Font("宋体", Font.CENTER_BASELINE, 15)); //设置柱状图轴 CategoryPlot mPlot = (CategoryPlot)mBarChart.getPlot(); //x轴 CategoryAxis mDomainAxis = mPlot.getDomainAxis(); //设置x轴标题的字体 mDomainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15)); //设置x轴坐标字体 mDomainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15)); //y轴 ValueAxis mValueAxis = mPlot.getRangeAxis(); //设置y轴标题字体 mValueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 15)); //设置y轴坐标字体 mValueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 15)); //柱体显示数值 BarRenderer mRenderer= new BarRenderer(); mRenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); mRenderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 10)); mRenderer.setItemLabelsVisible(true); mPlot.setRenderer(mRenderer); String filename = ServletUtilities.saveChartAsPNG(mBarChart, 800, 400, null, session); String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; //===========================直方图测试结束=================================================== //===========================饼图测试开始=================================================== //设置数据源 DefaultPieDataset mpieDataset = new DefaultPieDataset(); mpieDataset.setValue(" 市场前期", new Double(10)); mpieDataset.setValue(" 立项", new Double(15)); mpieDataset.setValue(" 计划", new Double(20)); mpieDataset.setValue(" 需求与设计", new Double(10)); mpieDataset.setValue(" 执行控制", new Double(25)); mpieDataset.setValue(" 收尾", new Double(10)); mpieDataset.setValue(" 运维",new Double(10)); //建立图表 JFreeChart mpieChart = ChartFactory.createPieChart3D("项目进度分布", mpieDataset, true, true, false); //设置图表标题 mpieChart.setTitle(new TextTitle("项目状态分布", new Font("黑体",Font.CENTER_BASELINE, 20))); //设置Legend字体 mpieChart.getLegend().setItemFont(new Font("宋体", Font.ROMAN_BASELINE, 15)); PiePlot3D mPiePlot = (PiePlot3D)mpieChart.getPlot(); //以默认方式显示百分比 //mPiePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT)); // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位 mPiePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%"))); // 底部图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例 mPiePlot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})")); //设置饼图标签字体 mPiePlot.setLabelFont(new Font("宋体", Font.PLAIN, 15)); String piefilename = ServletUtilities.saveChartAsPNG(mpieChart, 800, 400, null, session); String piegraphURL = request.getContextPath() + "/DisplayChart?filename=" + piefilename; //===========================饼图测试结束=================================================== //===========================折线图测试开始=================================================== StandardChartTheme mChartThemezxt = new StandardChartTheme("CN"); mChartThemezxt.setLargeFont(new Font("黑体", Font.BOLD, 20)); mChartThemezxt.setExtraLargeFont(new Font("宋体", Font.PLAIN, 15)); mChartThemezxt.setRegularFont(new Font("宋体", Font.PLAIN, 15)); ChartFactory.setChartTheme(mChartThemezxt); // row keys... String series1 = "First"; String series2 = "Second"; String series3 = "Third"; // column keys... String type1 = "Type 1"; String type2 = "Type 2"; String type3 = "Type 3"; String type4 = "Type 4"; String type5 = "Type 5"; String type6 = "Type 6"; String type7 = "Type 7"; String type8 = "Type 8"; // create the dataset... DefaultCategoryDataset dataset_zxt = new DefaultCategoryDataset(); dataset_zxt.addValue(1.0, series1, type1); dataset_zxt.addValue(4.0, series1, type2); dataset_zxt.addValue(3.0, series1, type3); dataset_zxt.addValue(5.0, series1, type4); dataset_zxt.addValue(5.0, series1, type5); dataset_zxt.addValue(7.0, series1, type6); dataset_zxt.addValue(7.0, series1, type7); dataset_zxt.addValue(0.0, series1, type8); dataset_zxt.addValue(5.0, series2, type1); dataset_zxt.addValue(7.0, series2, type2); dataset_zxt.addValue(6.0, series2, type3); dataset_zxt.addValue(8.0, series2, type4); dataset_zxt.addValue(4.0, series2, type5); dataset_zxt.addValue(4.0, series2, type6); dataset_zxt.addValue(2.0, series2, type7); dataset_zxt.addValue(1.0, series2, type8); dataset_zxt.addValue(4.0, series3, type1); dataset_zxt.addValue(3.0, series3, type2); dataset_zxt.addValue(2.0, series3, type3); dataset_zxt.addValue(3.0, series3, type4); dataset_zxt.addValue(6.0, series3, type5); dataset_zxt.addValue(3.0, series3, type6); dataset_zxt.addValue(4.0, series3, type7); dataset_zxt.addValue(3.0, series3, type8); JFreeChart mzxtChart = ChartFactory.createLineChart( "折线图", "时间", "数量", dataset_zxt, PlotOrientation.VERTICAL, true, true, false); CategoryPlot mzxtPlot = (CategoryPlot)mzxtChart.getPlot(); mzxtPlot.setBackgroundPaint(Color.LIGHT_GRAY); mzxtPlot.setRangeGridlinePaint(Color.BLUE);//背景底部横虚线 mzxtPlot.setOutlinePaint(Color.RED);//边界线 mzxtChart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));//图列 CategoryAxis mzxtdomainAxis = mzxtPlot.getDomainAxis(); //X坐标 mzxtdomainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); //X mzxtdomainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); ValueAxis mzxtValueAxis = mzxtPlot.getRangeAxis(); mzxtValueAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12)); //Y mzxtValueAxis.setLabelFont(new Font("黑体", Font.PLAIN, 12)); TextTitle zxttextTitle = mzxtChart.getTitle();//坐标标题设置 zxttextTitle.setFont(new Font("黑体", Font.PLAIN, 20)); String zxtfilename = ServletUtilities.saveChartAsPNG(mzxtChart, 800, 400, null, session); String zxtgraphURL = request.getContextPath() + "/DisplayChart?filename=" + zxtfilename; //===========================折线图测试结束=================================================== %> <img src="<%= graphURL %>" width=800 height=400 border=0 usemap="#<%= filename %>"> <br/> <img src="<%= piegraphURL %>" width=800 height=400 border=0 usemap="#<%= piefilename %>"> <br/> <img src="<%= zxtgraphURL %>" width=800 height=400 border=0 usemap="#<%= zxtfilename %>">
时间: 2024-10-10 09:17:57