JFreeChart_导出图表为PDF格式

合集下载

Echart生成的报表导出为PDF

Echart生成的报表导出为PDF

Echart⽣成的报表导出为PDF Echart官⽹定制js,选择需要的模块⽣成echart-min.js1.前端<!DOCTYPE html><html><head><meta charset="utf-8"><title>ECharts</title><!-- 引⼊ echarts.js --><script src="echarts.js"></script><script src="https:///jquery-3.1.1.min.js"></script></head><body><!-- 为ECharts准备⼀个具备⼤⼩(宽⾼)的Dom --><div id="main" style="width: 600px;height:400px;"></div><input type="button" id="download" value="下载"><script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据var option = {title: {text: 'ECharts ⼊门⽰例'},animation: false,tooltip: {},legend: {data:['销量']},xAxis: {data: ["衬衫","⽺⽑衫","雪纺衫","裤⼦","⾼跟鞋","袜⼦"]},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};option2 = {animation: false,title : {text: '某站点⽤户访问来源',subtext: '纯属虚构',x:'center'},tooltip : {trigger: 'item',formatter: "{a} <br/>{b} : {c} ({d}%)"},legend: {orient: 'vertical',left: 'left',data: ['直接访问','邮件营销','联盟⼴告','视频⼴告','搜索引擎']},series : [{name: '访问来源',type: 'pie',radius : '55%',center: ['50%', '60%'],data:[{value:335, name:'直接访问'},{value:310, name:'邮件营销'},{value:234, name:'联盟⼴告'},{value:135, name:'视频⼴告'},{value:1548, name:'搜索引擎'}],itemStyle: {emphasis: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]};// 使⽤刚指定的配置项和数据显⽰图表。

JFreeChart_导出图表为PDF格式

JFreeChart_导出图表为PDF格式


完成上面实例,运行实例,会产生一个PDF文档。 可以使用一个PDF浏览器(比如AcrobatReader (或者其他支持的阅读器,Gnome PDF Viewer)) 查看该文件,显示的界面如下图

大部分的PDF阅读器都提供了缩放技术,以允许更 进一步浏览图表。



简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicod表时,仅仅使用Graphics2D定 义的方法。这就意味着JFreeChart可以将图表输 出到Graphics2D子类支持的任何设备。

iText 工具融入了PdfGraphics2D的一个类,这 就意味着iText使用Graphics2D类定义的方法产 生 PDF 内容。并且正如你在后面看到的,在PDF 格式中产生图表会变的非常的容易。

副标题的输出如下图所示。实例已经嵌入到PDF 文件中。因此本文演示的该小程序很好的展示了 这种类型的输出,给出了详细的步骤指南,便于 正确使用。



简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题

为了完成和演示应用实例,我们需要下面的jar文 件:

首先JFreeChart包括两个jar文件,其次iText需 要一个jar文件。



在JFreeChart和iText中使用Unicode字符集是没有 任何问题的。在上面的例子中需要做一些修改来演 示如何做到这些。
◦ 背景 ◦ 字体、iText和Java ◦ 映射第三方的字体



Java使用同一的字符集译码成文本字符串。这种译码对每个 字符使用16进制。这就意味着将有65,536个有效的不同 字符集(在Unicode标准中定义了大约38,000个字符)。 可以在JFreeChart和iText中使用这些字符,但归于一条:那 就是只要使用字体,包括用来显示的文本或者不显示的,都 必须定义这些字符。许多字体并不完全显示成Unicode字符 集。下面的网站含有那些的确支持 Unicode 的字体的有用 信息:/unifonts.htm 可以成功的提取使用tahoma.ttf字体。实际上,下面实例中 将使用该字体,Tahoma字体并不是支持Unicode定义的每 一个字符。因此,如果想使用一种特殊的字体时,就得必须 选Unicode中一种相近的字体来代替。系统上都安装了字体 Unicode MS(arialuni.ttf)——该字体完全支持Unicode字符 集,尽管这种字体的定义的文件特别大(大约24M)

JFreeChart生成报表并生成PDF文件封装方法使用

JFreeChart生成报表并生成PDF文件封装方法使用

用到的文件:1.JFreeChart2.Itext3.Sturts2调用方法:1.在action中定义属性jfreeChartForm并获取其get和set方法2.在action 中定义接口属性Ijfreechart并获取其get和set方法3.调用接口Ijfreechart中的方法方法/***柱状图的实现**@param doubleList*数据集*@param rowKeys*每列的数据分类*@param columnKeys*列的分类*@param xTitle*x轴标题*@param yTitle*y轴标题*@param chartTitle*图片的标题*@param barColorList*柱子颜色*@param groupColor*图片背景颜色*@param backgroundPaint*柱状图背景颜色*@return文件名称表示成功null表示有错误产生*/String barChart(List<double[]> doubleList, String[] rowKeys, String[] columnKeys, String xTitle, String yTitle,String chartTitle, List<Color> barColorList,Color BackgroundColor, Color backgroundPaint);例子(生成图片如下):Action中的方法public String makeBarGroupChart() {String result = "";// 设置X轴标题String xTitle = "年份";// 设置X轴列名称String[] columnKeys = { "2011", "2012", "2013" };// 设置Y轴标题String yTitle = "设备数量";//初始化数据List<double[]> doubleList = new ArrayList<double[]>();String[] rowKeys = new String[]{"vpp设备","vph设备","工作站主机"};//添加数据doubleList.add(new double[] { 100, 150, 200 });doubleList.add(new double[] { 80, 130, 170 });doubleList.add(new double[] { 120, 170, 220 });// 设置图片标题String chartTitle = "设备数量图";// 获取每个柱子颜色的List<Color> (注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)List<Color> barColorList = new ArrayList<Color>();barColorList.add(new Color(127,255,212));barColorList.add(new Color(220,220,220));barColorList.add(new Color(152,251,152));//定义图片背景颜色Color backgroundColor = Color.white;//定义柱形图颜色Color barColor = new Color(238,220,130);//调用方法生成图片获取返回值String fileName = this.jfreechart.barChart(doubleList, rowKeys, columnKeys, xTitle, yTitle, chartTitle, barColorList,backgroundColor, barColor);this.jfreeChartForm = new JFreeChartForm();this.jfreeChartForm.setFileName(fileName);if(fileName == null || fileName == ""){result = ERROR;}else{result = SUCCESS;}return result;}效果图:在JSP上的调用方法:<imgsrc="${pageContext.request.contextPath}/web/report/images/temp/${jfre eChartForm.fileName}">/***饼状图**@param data*数据集*@param datadescription*数据的业务逻辑*@param chartTitle*图片标题*@param pieKeys*分饼名称*@param pieColorList*分饼颜色*@param pieChartColor*饼图颜色*@param backgroundColor*图片背景色*@return 文件名称表示成功null表示有错误产生*/String createValidityComparePimChar(double[] data,String[] datadescription, String chartTitle, String[]pieKeys,List<Color> pieColorList, Color pieChartColor, ColorbackgroundColor);例子(生成图片如下):Action中的方法public String makePieChart() {String result = "";List<String> userNameList = erName();String[] Keys = new String[]{"vpp设备使用人数","vph设备使用人数","工作站设备使用人数"};//初始化数据double[] doubleList = new double[]{70,50,80};List<Color> barColorList = new ArrayList<Color>();Color backgroundColor = null;Color pieChartColor = null;String fileName =this.jfreechart.createValidityComparePimChar(doubleList, Keys,"饼状图", Keys, barColorList,pieChartColor, backgroundColor);this.jfreeChartForm = new JFreeChartForm();this.jfreeChartForm.setFileName(fileName);if(fileName == null || fileName == ""){result = ERROR;}else{result = SUCCESS;}return result;}效果图:在JSP上的调用方法:<imgsrc="${pageContext.request.contextPath}/web/report/images/temp/${jfre eChartForm.fileName}">/***折线图**@param rowKeys*每条线的数据点*@param columnKeys*X轴上的列名*@param chartTitle*图片标题*@param xName*x轴标题*@param yName*y轴标题*@param xyDataset*数据集*@return 文件名称表示成功null表示有错误产生*/String createTimeXYChar(String[] rowKeys, String[] columnKeys, String chartTitle, String xName, String yName,List<double[]> xyDataset, Color backgroundColor,Color lineChartColor, List<Color> barColorList);例子(生成图片如下):Action中的方法public String makeLineAndShapeChart() {String result = "";String xTitle = "年份";// 设置X轴列名称String[] columnKeys = { "2011", "2012", "2013" };// 设置Y轴标题String yTitle = "设备数量";//初始化数据List<double[]> doubleList = new ArrayList<double[]>();//添加数据String[] rowKeys = new String[]{"vpp设备","vph设备","工作站主机"};doubleList.add(new double[] { 100, 150, 200 });doubleList.add(new double[] { 80, 130, 170 });doubleList.add(new double[] { 120, 170, 220 });List<String> userNameList = erName();//设置图片背景色Color backgroundColor = null;//设置折线图背景色Color LineChartColor = null;//设置线的颜色List<Color> barColorList = new ArrayList<Color>();String fileName = this.jfreechart.createTimeXYChar(rowKeys, columnKeys, "折线图",xTitle, yTitle, doubleList,backgroundColor, LineChartColor, barColorList);this.jfreeChartForm = new JFreeChartForm();this.jfreeChartForm.setFileName(fileName);if(fileName == null || fileName == ""){result = ERROR;}else{result = SUCCESS;}return result;}在JSP上的调用方法:<imgsrc="${pageContext.request.contextPath}/web/report/images/temp/${jfre eChartForm.fileName}">下面是封装的方法:JFreeChart类:package .bis.gms.jfreechart;import java.awt.Color;import java.awt.Font;import java.awt.RenderingHints;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import java.text.DecimalFormat;import java.text.NumberFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.PageContext;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import ng.StringUtils;import org.apache.struts2.ServletActionContext;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartPanel;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.ValueAxis;import bels.StandardCategoryItemLabelGenerator; import bels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PiePlot;import org.jfree.chart.plot.PiePlot3D;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.chart.title.LegendTitle;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.general.DatasetUtilities;import org.jfree.data.general.DefaultPieDataset;import com.lowagie.text.Rectangle;import com.lowagie.text.pdf.DefaultFontMapper;import com.lowagie.text.pdf.FontMapper;import .bis.core.base.web.action.BaseAction;import java.awt.Graphics2D;import java.awt.geom.Rectangle2D;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.text.SimpleDateFormat;import org.jfree.chart.ChartFactory;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.DateAxis;import org.jfree.chart.plot.XYPlot;import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.servlet.ServletUtilities;import org.jfree.data.time.Month;import org.jfree.data.time.TimeSeries;import org.jfree.data.time.TimeSeriesCollection;import org.jfree.data.xy.XYDataset;import com.lowagie.text.BadElementException;import com.lowagie.text.Document;import com.lowagie.text.DocumentException;import com.lowagie.text.Element;import com.lowagie.text.Image;import com.lowagie.text.Paragraph;import com.lowagie.text.Rectangle;import com.lowagie.text.pdf.DefaultFontMapper;import com.lowagie.text.pdf.FontMapper;import com.lowagie.text.pdf.PdfContentByte;import com.lowagie.text.pdf.PdfPCell;import com.lowagie.text.pdf.PdfPTable;import com.lowagie.text.pdf.PdfTemplate;import com.lowagie.text.pdf.PdfWriter;public class JfreeChart extends BaseAction implements Ijfreechart { public static final long serialVersionUID = 1;private String fileName;/***柱状图的实现**@param doubleList*数据集*@param rowKeys*每列的数据分类*@param columnKeys*列的分类*@param xTitle*x轴标题*@param yTitle*y轴标题*@param chartTitle*图片的标题*@param barColorList*柱子颜色*@param groupColor*图片背景颜色*@param backgroundPaint*柱状图背景颜色*@return文件名称表示成功null表示有错误产生*/public String barChart(List<double[]> doubleList, String[] rowKeys, String[] columnKeys, String xName, String yName, String chartTitle,List<Color> barColorList, Color backgroundColor,Color backgroundPaint) {// 初始化返回值String m_Result = "";// 校验传入的参数是否有误this.verifyInputBarValue(doubleList, rowKeys, columnKeys, xName, yName,chartTitle, barColorList, backgroundColor);// 表示没有存在有错误内容if (super.getFieldErrors().size() == 0) {// 初始化二维数组double[][] data = new double[doubleList.size()][];// 获取数据for (int i = 0; i < doubleList.size(); i++) {data[i] = doubleList.get(i);}// 根据数据获取支持生成图片的数据集CategoryDataset dataset =DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);// 创建JFreChart对象JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)true, // 是否生成工具true// 是否生成URL链接);// 设置字体格式(整体的字体格式)Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);// 设置文字锯齿chart.setTextAntiAlias(true);chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASIN G,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);// 判断背景图片颜色是否设置if (backgroundColor == null) {// 设置默认颜色backgroundColor = Color.lightGray;} else {// 设置背景色chart.setBackgroundPaint(backgroundColor);}// 创建 plotCategoryPlot plot = chart.getCategoryPlot();// 设置横虚线可见plot.setRangeGridlinesVisible(true);// 虚线色彩plot.setRangeGridlinePaint(Color.gray);// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();// 数据轴数据标签的显示格式DecimalFormat df = new DecimalFormat("#0.00");vn.setNumberFormatOverride(df);// x轴设置CategoryAxis domainAxis = plot.getDomainAxis();// x轴标题domainAxis.setLabelFont(labelFont);// x轴数值domainAxis.setTickLabelFont(labelFont);// 横轴上的Lable是否完整显示domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 设置距离图片左端距离domainAxis.setLowerMargin(0.1);// 设置距离图片右端距离domainAxis.setUpperMargin(0.1);// 设置距离图片顶端距离plot.setDomainAxis(domainAxis);// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)if (backgroundPaint == null) {// 设置默认值plot.setBackgroundPaint(new Color(255, 255, 204));} else {// 将传入的参数设置为背景色plot.setBackgroundPaint(backgroundPaint);}// 设置X轴完毕// y轴设置// 获取y轴ValueAxis rangeAxis = plot.getRangeAxis();// y轴标题字体设置rangeAxis.setLabelFont(labelFont);// y轴数值字体设置rangeAxis.setTickLabelFont(labelFont);// 设置最高的一个 Item 与图片顶端的距离rangeAxis.setUpperMargin(0.2);// 设置最低的一个 Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);plot.setRangeAxis(rangeAxis);// 初始化柱子对象BarRenderer renderer = new BarRenderer();// 设置柱子宽度renderer.setMaximumBarWidth(0.1);// 设置柱子高度renderer.setMinimumBarLength(0.2);// 设置柱子边框颜色renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱子边框可见renderer.setDrawBarOutline(true);// 设置柱的颜色// 判断柱子颜色的List是否设置if (barColorList == null || barColorList.size() == 0) { // 设置默认颜色barColorList = new ArrayList<Color>();barColorList.add(Color.DARK_GRAY);} else {for (int i = 0; i < barColorList.size(); i++) {renderer.setSeriesPaint(i, barColorList.get(i));}}// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.0);// 显示每个柱的数值,并修改该数值的字体属性renderer.setIncludeBaseInRange(true);renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(1.0f);// 获取HttpServletResponseHttpServletResponse response =ServletActionContext.getResponse();// 获取HttpServletRequestHttpServletRequest request =ServletActionContext.getRequest();// 解决乱码// X轴文字乱码domainAxis.setTickLabelFont(new Font("sans-serif",Font.PLAIN, 15));// X轴标题乱码domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 17));// Y轴文字乱码rangeAxis.setTickLabelFont(new Font("sans-serif",Font.PLAIN, 15));// Y轴标题乱码rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 17));// 标题乱码Font fontTitle = new Font("宋体", Font.PLAIN, 20);TextTitle title = new TextTitle(chartTitle, fontTitle);chart.setTitle(title);// 说明乱码chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 15));try {// 输出流声称图片//ChartUtilities.writeChartAsPNG(response.getOutputStream(),chart, 700, 500);//response.reset();// 将图片保存为pdf格式fileName= barChartToPDF(chart, request, dataset, 500, 400, chartTitle,xName, yName);request.getInputStream().close();} catch (Exception e) {e.printStackTrace();// 设置返回值fileName = null;} finally {try {} catch (Exception e) {e.printStackTrace();// 设置返回值fileName = null;}}} else {fileName = null;}return fileName;}/***饼状图**@param data*数据集*@param datadescription*数据的业务逻辑*@param chartTitle*图片标题*@param pieKeys*分饼名称*@param pieColorList*分饼颜色*@param pieChartColor*饼图颜色*@param backgroundColor*图片背景色*@return SUCCESS表示成功ERROR表示有错误产生*/public String createValidityComparePimChar(double[] data,String[] datadescription, String chartTitle, String[] pieKeys,List<Color> pieColorList, Color pieChartColor, Color backgroundColor) {// 初始化返回值String m_Result = "";verifyInputPieValue(data, datadescription, chartTitle, pieKeys);if (super.getFieldErrors().size() == 0) {// 初始化一个支持生成饼图的数据集DefaultPieDataset dataset = new DefaultPieDataset();// 判断传入的数据是否为空if (data != null && datadescription != null) {// 判断传入的List长度是否和数据名称一样长if (data.length == datadescription.length) {// 遍历List获取数据for (int i = 0; i < data.length; i++) {// 将遍历到的数据加入数据集dataset.setValue(datadescription[i], data[i]);}}}// 创建JFreeChart对象JFreeChart chart = ChartFactory.createPieChart(chartTitle, // 图片标题dataset,// 支持生成饼图的数据集true,// 是否显示图例(对于简单的柱状图必须是false)true,// 是否生成工具false);// 是否生成URL链接// 使下说明标签字体清晰,去锯齿chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASIN G,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);chart.setTextAntiAlias(true);// 图片背景色// 判断是否有图片背景色被传入if (backgroundColor == null) {// 设置图片的默认背景色chart.setBackgroundPaint(new Color(250,240,230));} else {// 设置图片背景色味传入的Colorchart.setBackgroundPaint(backgroundColor);}// 设置图标题的字体重新设置titleFont font = new Font("隶书", Font.BOLD, 25);TextTitle title = new TextTitle(chartTitle);title.setFont(font);chart.setTitle(title);// 获取PiePlot3D对象PiePlot plot = (PiePlot) chart.getPlot();// 图片中显示百分比:默认方式// 指定饼图轮廓线的颜色plot.setBaseSectionOutlinePaint(Color.BLACK);// 设置无数据时的信息plot.setNoDataMessage("无对应的数据,请重新查询。

JFreeChart_直方条形图

JFreeChart_直方条形图




简介 创建一个直方条形图 ChartFactory类 直方条形图的简单定制 定制外观 示例代码解读

调用 JFreeChart 和 CategoryPlot 类方法可以进 行一些简单的直方图表外观的修改。例如,改变图 表和区域的背景颜色代码如下:

该片段代码显示了改变图表的背景颜色、获得图表 的plot(区域)的引用,并且进行了修改——效果 如图

区域 Plot 的引用(CategoryPlot)是必须的—— 转换类型也是非常安全的,因为我们知道该图表类 型使用 CategoryPlot。JFreeChart 使用不同的区 域类型(比如 PiePlot、XYPlot)控制不同类型的 图表。我们必须将 plot 的引用转化成图表响应的 类型,因为基本类 Plot 仅仅定义了一些通用的属 性和方法。



概述 创建一个dataset 创建一个chart图表 显示该chart图表


创建直方条形图的第一步就是创建一个合适的 dataset 数据集。JFreeChart 为直方条形图提供的 访问表列数据的一系列方法,必须符合接口 CategoryDataset 定义。 JFreeChart中 提 供 了 一 个 便 利 的 实 现 CategoryDataset接 口 的 类 为 DefaultCategoryDataset。下面显示我们如何使 用这个类来封装表数据。代码如下:



概述 创建一个dataset 创建一个chart图表 显示该chart图表

为了完成我们的第一个直方条形图实例,我们将 JFreeChart实例传给一个ChartPanel对象,然后 在一个 Swing 应用窗口上显示该实例。全部的代 码如下:

JFreeChart图表制作

JFreeChart图表制作


两个大的包组成:org.jfree.chart 与org.jfree.data。其中前者主要与图 形本身有关,后者与图形显示的数据有关。 核心类主要有: org.jfree.chart.JFreeChart :图表对象,任何类型的图表的最终表现形 式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个 工厂类用于创建不同类型的图表对象。 org.jfree.data.category.XXXDataSet: 数据集对象,用于提供显示图 表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类。 org.jfree.chart.plot.XXXPlot :图表区域对象,基本上这个对象决定着 什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对 象的支持 org.jfree.chart.axis.XXXAxis :用于处理图表的两个轴:纵轴和横轴。 org.jfree.chart.render.XXXRender :负责如何显示一个图表对象。 org.jfree.chart.urls.XXXURLGenerator: 用于生成Web图表中每个项目 的鼠标点击链接。 XXXXXToolTipGenerator: 用于生成图象的帮助提示,不同类型图表对 应不同类型的工具提示类。
了解JFreeChart 利用JFreeChart生成饼状图 利用JFreeChart生成柱状图 利用JFreeChart生成折线图 利用JFreeChart生成时序图 JFreeChat的Web应用


JFreeChart(/) 是一个开 源的 JAVA 项目,它主要用来开发各种各样的图 表,这些图表包括:饼图、柱状图 ( 普通柱状图 以及堆栈柱状图 ) 、线图、区域图、分布图、混 合图、甘特图以及一些仪表盘等等。在这些不同 式样的图表上可以满足目前商业系统的要求。 JFreeChart 是一种基于 JAVA 语言的图表开发 技术。 JFreeChart 可用于 Servlet 、 JSP 、 Applet 、 Java Appication 环境中,通过 JDBC 可动态显示任何数据库数据。

JSP程序设计课后习题答案

JSP程序设计课后习题答案

JSP程序设计课后习题答案第⼀章 JSP概述1-1 JSP的全称是什么?JSP有什么优点?JSP与ASP、PHP的相同点是什么?JSP的全称是Java Server Pages。

优点:跨平台、分离静态内容和动态内容、可重复使⽤的组件、沿⽤了Java Servlet的所有功能、具有预编译性。

共同点:可以在页⾯中加⼊脚本代码来⽣成动态内容。

1-2 JSP中可重复使⽤的组件有哪些?JavaBean组件、JSP的标准标签和⾃定义标签。

1-3 什么是JSP的预编译特征?预编译是JSP的另⼀个重要的特性。

JSP页⾯在被服务器执⾏前,都是已经被编译好的,并且通常只进⾏⼀次编译,即在JSP页⾯被第⼀次请求时进⾏编译,在后续的请求中如果JSP页⾯没有被修改过,服务器只需要直接调⽤这些已经被编译好的代码,这⼤⼤提⾼了访问速度。

1-4 开发JSP程序需要具备哪些开发环境?Web浏览器、Web服务器、JDK开发⼯具包以及数据库。

1-5 在成功安装JDK后,需要配置哪些环境变量?JAVA_HOME变量、Path变量、CLASSPATH变量1-6 Tomcat的默认端⼝、⽤户名和密码分别是什么?端⼝为“8080”、⽤户名为“admin”、密码为空。

1-7 本章介绍的⽤来开发JSP程序的开发⼯具是什么?Eclipse1-8 开发JSP程序可采⽤哪⼏种开发模式?分别介绍它们的优缺点。

单纯的JSP页⾯编程:优点:通过应⽤JSP中的脚本标志,可直接在JSP页⾯中实现各种功能。

缺点:⼤部分的Java代码与HTML代码混淆在⼀起,给程序的维护和调试带来很多的困难。

JSP+JavaBean编程优点:jsp与javabean的结合,使web程序更加的直观,使⽤简单,不⽤于后台进⾏交互,直接在前端处理业务逻辑,更快速。

缺点:性能不好,jsp作为web的前端程序包含了太多的业务逻辑,给前端jsp造成了压⼒。

不便于维护。

JSP+Servlet+JavaBean编程优点:能够更好的实现表⽰层,逻辑层和数据访问层的分离。

JFreeChart_导出图表为SVG格式

JFreeChart_导出图表为SVG格式




JFreeChart和Batik 开始 实例应用 浏览SVG图


首先,需要下载Batik并依照网站的指导进行安装。 确保下章节的例子能够正常运行,需要将下面的 jar包加到classpath:



JFreeChart和Batik 开始 实例应用 浏览SVG图

发环境中创建一个工程,并且将上节列出的 jar 包添加到工程路径上,并输入下面代码:



JFreeChart和Batik 开始 实例应用 浏览SVG图

Batik类库内包含了一个“Squiggle”的小应用, 可以使用该工具浏览SVG文件。可以使用下面命 令打开:java -jar batik-squiggle.jar

下图截屏显示了上述代码创建的一个饼图的界面。 使用应用浏览器工具,将图表在浏览器中进行了 45度旋转。
简介图表实例下载和安装jfreechart使用jfreechart饼图直方条形图折线图时序图定制图表动态图图表工具条图表条目标签多轴和数据源图表组合图表数据源和jdbc导出图表为pdf格式导出图表为svg格式appletservletsjfreechart相关技术包
John Rain gjwm0826@
◦ 因为JFreeChart画的所有图表的输出都是使用的 Java的 Graphics2D; ◦ Batik具体实现了Graphics2D产生SVG输出的功能 (SVGGraphics2D)。

本节使用一个简单的实例说明使用JFreeChart和 Batik实现SVG的输出。关于该实例的详细技术详 见下面链接: /batik/svggen.html



简介 背景 实例代码

深入探究JFreeChart

深入探究JFreeChart

深入探究JFreeChart1 简介JFreeChart 是 上的一个开源项目,它的源码和 API 都可以免费获得。

JFreeChart 的功能非常强大,可以实现饼图 ( 二维和三维 ) , 柱状图 ( 水平 , 垂直 ), 线图 , 点图 , 时序图 , 甘特图 , 股票行情图 , 混和图 , 温度计图 , 刻度图等常用商用图表,图形可以导出成 PNG 和JPEG 格式,同时还可以与 PDF 和 EXCEL 关联,支持对图形的放大、缩小,支持常见图形的 3D 显示。

2 图形对象的处理2 .1 JFreeChart对象JFreeChart 可以生成很多图形对象,它的工厂类提供了 33 个工厂方法用于生成不同的图形对象(具体的工厂方法可以参见 JFreeChart 的 API 手册或者源码中的 ChartFactory 类)。

JFreechart 对图形对象的抽象具体化。

图形对象( JFreeChart ),由 Title( 主标题 ) , SubTitle (子标题 ) ,Plot (图形的绘制结构)等几个主要对象组成。

各个组成部分如下图所示:这是一个 JFreeChart 对象,上面的“ chart 标题”是 Title 对象,中间区域是 Plot 对象(包括绘图区域和坐标轴区域),下面的区域是 LegendTitle 对象,是一种 SubTitle 对象。

每个 JFreeChart 对象只能有 1 个 Title 对象, 1 个 Plot 对象,可以有多个 SubTitle 对象。

JFreeChart 对象可以进行的操作有:背景的设置(背景颜色、背景图片、透明度等)、边框的设置(是否可见、笔画、 Paint 等)、渲染方式的设置、标题对象的设置、子标题对象的增删查操作。

(本文中的所有操作都不提供代码级的介绍,可参见 API 手册或者源码)2 .2 主标题对象主标题对象是 TextTitle 类型,可以进行的操作有:背景设置、字体设置(字体类型、颜色、内容、对齐方式等操作)、 tooltip 设置、 URL 设置。

使用JFreeChart创建图表

使用JFreeChart创建图表

JFreeChart概述
JFreeChart是开放源代码站点 是开放源代码站点上的一 是开放源代码站点 上的一 项目, 个JAVA项目,它主要用来各种各样的图表,这些图表包括: 项目 它主要用来各种各样的图表,这些图表包括:
Pie charts:饼图 (2D and 3D)、 Bar charts:柱状图 (2D and 3D) Line charts:曲线图 Area charts(区域图)、XY Plots(坐标图)、Time Series Charts(时序图)、 Histograms(直方图)、Difference Chart(方差图)、Step Chart(步骤图)、 Gantt Chart(甘特图)、Multiple Axis Charts、Combined and Overlaid Charts(混合图)等等
柱状图
step1:创建数据集对象
public static CategoryDataset createDataSet2() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(5000, "北京","易学java"); dataset.setValue(3000, "上海","易学java"); dataset.setValue(2000, "广州","易学java"); dataset.setValue(10000, "北京","JavaWeb整合开发与项目实战"); dataset.setValue(6000, "上海","JavaWeb整合开发与项目实战"); dataset.setValue(4000, "广州","JavaWeb整合开发与项目实战"); dataset.setValue(15000, "北京","易用struts"); dataset.setValue(5000, "上海","易用struts"); dataset.setValue(10000, "广州","易用struts"); dataset.setValue(20000, "北京","精通JSF"); dataset.setValue(10000, "上海","精通JSF"); dataset.setValue(10000, "广州","精通JSF"); return dataset; }

怎么把流程图导出为PDF文档?迅捷画图教你简单导出的小窍门!

怎么把流程图导出为PDF文档?迅捷画图教你简单导出的小窍门!

怎么把流程图导出为PDF文档?迅捷画图教你简单导出的小窍门!
怎么把流程图导出为PDF文档?如果以前有人说想要把流程图转换成PDF文档,那小编可能会认真思考先,得出以下步骤:先将流程图导出图片,再利用PDF转换器把图片转为PDF 文档。

但是今天小编带来了新教程,打开“迅捷画图”网站,在网站的绿色背景页面点击创建流程图,或者点击模板库中的流程图模板,直接进入模板页面选择一个模板进行套用。

根据我们需要绘制的流程图,在搜索框中输入关键词,例如小编需要绘制一个“故障处理流程图,”那么在搜索框中输入关键词“故障”或者“处理”都可以,然后在出现的模板中,选择自己喜欢模板点击“在线编辑,”进入编辑页面。

在编辑页面对流程图进行编辑和修改,编辑完成之后,点击页面右上角的导出,在导出的下拉菜单中会出现流程图能够导出的各种格式,在格式中选择我们需要的“PDF文件。


选中之后,就会弹出PDF窗口,在窗口中对缩放百分比、边框宽度的进行修改,并对透明背景、仅所选内容、阴影等进行选择,调整好之后点击导出,在新弹出的新建下载任务页面中点击下载就可以了。

以上就是将流程图导出为PDF文件的具体操作步骤,在迅捷画图网站中,不止流程图可以这样操作,思维导图绘制完成之后,也可以导成PDF文件。

感兴趣的小伙伴快打开迅捷画图,自己动手试试吧。

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

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

最近公司使用jfreechart来生成统计图,使用了折线图,饼图等,因为用的1.0.8a版的jfreechart,与1.0.0版本的地方有很多不同,而且图片生成清晰度比老版的高,如下是我做的demo.1.所需包(1) jfreechart-1.0.8a.jar(2) jcommon-1.0.12.jar2.运行环境JDK 1.53.源代码import java.awt.Color;import java.awt.Font;import java.io.File;import java.io.FileOutputStream;import java.text.DecimalFormat;import java.text.NumberFormat;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartUtilities;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.V alueAxis;import bels.StandardCategoryItemLabelGenerator;import bels.StandardPieSectionLabelGenerator;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.plot.PiePlot3D;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.chart.renderer.category.StackedBarRenderer;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.CategoryDataset;import org.jfree.data.general.DatasetUtilities;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;/*** 实际取色的时候一定要16位的,这样比较准确** @author new*/public class CreateChartServiceImpl{private static final String CHART_PA TH = "E:/test/";public static void main(String[] args){// TODO Auto-generated method stubCreateChartServiceImpl pm = new CreateChartServiceImpl();// 生成饼状图pm.makePieChart();// 生成单组柱状图pm.makeBarChart();// 生成多组柱状图pm.makeBarGroupChart();// 生成堆积柱状图pm.makeStackedBarChart();// 生成折线图pm.makeLineAndShapeChart();}/*** 生成折线图*/public void makeLineAndShapeChart(){double[][] data = new double[][]{{ 672, 766, 223, 540, 126 },{ 325, 521, 210, 340, 106 },{ 332, 256, 523, 240, 526 } };String[] rowKeys ={ "苹果", "梨子", "葡萄" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createTimeXYChar("折线图", "x轴", "y轴", dataset, "lineAndShap.png"); }/*** 生成分组的柱状图*/public void makeBarGroupChart(){double[][] data = new double[][]{ 672, 766, 223, 540, 126 },{ 325, 521, 210, 340, 106 },{ 332, 256, 523, 240, 526 } };String[] rowKeys ={ "苹果", "梨子", "葡萄" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createBarChart(dataset, "x坐标", "y坐标", "柱状图", "barGroup.png");}/*** 生成柱状图*/public void makeBarChart(){double[][] data = new double[][]{{ 672, 766, 223, 540, 126 } };String[] rowKeys ={ "苹果" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createBarChart(dataset, "x坐标", "y坐标", "柱状图", "bar.png");}/*** 生成堆栈柱状图*/public void makeStackedBarChart(){double[][] data = new double[][]{{ 0.21, 0.66, 0.23, 0.40, 0.26 },{ 0.25, 0.21, 0.10, 0.40, 0.16 } };String[] rowKeys ={ "苹果", "梨子" };String[] columnKeys ={ "北京", "上海", "广州", "成都", "深圳" };CategoryDataset dataset = getBarData(data, rowKeys, columnKeys); createStackedBarChart(dataset, "x坐标", "y坐标", "柱状图", "stsckedBar.png"); }/*** 生成饼状图*/public void makePieChart(){double[] data ={ 9, 91 };String[] keys ={ "失败率", "成功率" };createV alidityComparePimChar(getDataPieSetByUtil(data, keys), "饼状图", "pie2.png", keys);}// 柱状图,折线图数据集public CategoryDataset getBarData(double[][] data, String[] rowKeys, String[] columnKeys){return DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);}// 饼状图数据集public PieDataset getDataPieSetByUtil(double[] data,String[] datadescription){if (data != null && datadescription != null){if (data.length == datadescription.length){DefaultPieDataset dataset = new DefaultPieDataset();for (int i = 0; i < data.length; i++){dataset.setV alue(datadescription[i], data[i]);}return dataset;}}return null;/*** 柱状图**@param dataset 数据集* @param xName x轴的说明(如种类,时间等)* @param yName y轴的说明(如速度,时间等)* @param chartTitle 图标题* @param charName 生成图片的名字* @return*/public String createBarChart(CategoryDataset dataset, String xName,String yName, String chartTitle, String charName){JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)false, // 是否生成工具false // 是否生成URL链接);Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);/** V ALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭,* 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看*///chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.V ALUE_TEXT_ANTIALIAS_OFF);chart.setTextAntiAlias(false);chart.setBackgroundPaint(Color.white);// create plotCategoryPlot plot = chart.getCategoryPlot();// 设置横虚线可见plot.setRangeGridlinesVisible(true);// 虚线色彩plot.setRangeGridlinePaint(Color.gray);// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();// vn.setAutoRangeIncludesZero(true);DecimalFormat df = new DecimalFormat("#0.00");vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式// x轴设置CategoryAxis domainAxis = plot.getDomainAxis();domainAxis.setLabelFont(labelFont);// 轴标题domainAxis.setTickLabelFont(labelFont);// 轴数值// Lable(Math.PI/3.0)度倾斜// domainAxis.setCategoryLabelPositions(CategoryLabelPositions// .createUpRotationLabelPositions(Math.PI / 3.0));domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的Lable 是否完整显示// 设置距离图片左端距离domainAxis.setLowerMargin(0.1);// 设置距离图片右端距离domainAxis.setUpperMargin(0.1);// 设置columnKey 是否间隔显示// domainAxis.setSkipCategoryLabelsToFit(true);plot.setDomainAxis(domainAxis);// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)plot.setBackgroundPaint(new Color(255, 255, 204));// y轴设置V alueAxis rangeAxis = plot.getRangeAxis();rangeAxis.setLabelFont(labelFont);rangeAxis.setTickLabelFont(labelFont);// 设置最高的一个Item 与图片顶端的距离rangeAxis.setUpperMargin(0.15);// 设置最低的一个Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);plot.setRangeAxis(rangeAxis);BarRenderer renderer = new BarRenderer();// 设置柱子宽度renderer.setMaximumBarWidth(0.05);// 设置柱子高度renderer.setMinimumBarLength(0.2);// 设置柱子边框颜色renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱子边框可见renderer.setDrawBarOutline(true);// // 设置柱的颜色renderer.setSeriesPaint(0, new Color(204, 255, 255));renderer.setSeriesPaint(1, new Color(153, 204, 255));renderer.setSeriesPaint(2, new Color(51, 204, 204));// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.0);// 显示每个柱的数值,并修改该数值的字体属性renderer.setIncludeBaseInRange(true);renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(1.0f);FileOutputStream fos_jpg = null;try{isChartPathExist(CHART_PA TH);String chartName = CHART_PA TH + charName;fos_jpg = new FileOutputStream(chartName);ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 500, true, 10);return chartName;}catch (Exception e){e.printStackTrace();return null;}finally{try{fos_jpg.close();}catch (Exception e){e.printStackTrace();}}/*** 横向图** @param dataset 数据集* @param xName x轴的说明(如种类,时间等)* @param yName y轴的说明(如速度,时间等)* @param chartTitle 图标题* @param charName 生成图片的名字* @return*/public String createHorizontalBarChart(CategoryDataset dataset,String xName, String yName, String chartTitle, String charName){JFreeChart chart = ChartFactory.createBarChart(chartTitle, // 图表标题xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)false, // 是否生成工具false // 是否生成URL链接);CategoryPlot plot = chart.getCategoryPlot();// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();//设置刻度必须从0开始// vn.setAutoRangeIncludesZero(true);DecimalFormat df = new DecimalFormat("#0.00");vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式CategoryAxis domainAxis = plot.getDomainAxis();domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的// LableFont labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);domainAxis.setLabelFont(labelFont);// 轴标题domainAxis.setTickLabelFont(labelFont);// 轴数值domainAxis.setMaximumCategoryLabelWidthRatio(0.8f);// 横轴上的Lable 是否完整显示// domainAxis.setV erticalCategoryLabels(false);plot.setDomainAxis(domainAxis);V alueAxis rangeAxis = plot.getRangeAxis();// 设置最高的一个Item 与图片顶端的距离rangeAxis.setUpperMargin(0.15);// 设置最低的一个Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);plot.setRangeAxis(rangeAxis);BarRenderer renderer = new BarRenderer();// 设置柱子宽度renderer.setMaximumBarWidth(0.03);// 设置柱子高度renderer.setMinimumBarLength(30);renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱的颜色renderer.setSeriesPaint(0, Color.GREEN);renderer.setSeriesPaint(1, new Color(0, 0, 255));// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.5);// 显示每个柱的数值,并修改该数值的字体属性renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); // 设置柱的数值可见renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(0.6f);FileOutputStream fos_jpg = null;try{isChartPathExist(CHART_PA TH);String chartName = CHART_PA TH + charName;fos_jpg = new FileOutputStream(chartName);ChartUtilities.writeChartAsPNG(fos_jpg, chart, 500, 500, true, 10);return chartName;}catch (Exception e){e.printStackTrace();return null;}finally{try{fos_jpg.close();}catch (Exception e){e.printStackTrace();}}}/*** 饼状图** @param dataset 数据集* @param chartTitle 图标题* @param charName 生成图的名字* @param pieKeys 分饼的名字集* @return*/public String createV alidityComparePimChar(PieDataset dataset,String chartTitle, String charName, String[] pieKeys){JFreeChart chart = ChartFactory.createPieChart3D(chartTitle, // chart// titledataset,// datatrue,// include legendtrue, false);// 使下说明标签字体清晰,去锯齿类似于//chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.V ALUE_TEXT_ANTIALIAS_OFF);的效果chart.setTextAntiAlias(false);// 图片背景色chart.setBackgroundPaint(Color.white);// 设置图标题的字体重新设置titleFont font = new Font("隶书", Font.BOLD, 25);TextTitle title = new TextTitle(chartTitle);title.setFont(font);chart.setTitle(title);PiePlot3D plot = (PiePlot3D) chart.getPlot();// 图片中显示百分比:默认方式// 指定饼图轮廓线的颜色// plot.setBaseSectionOutlinePaint(Color.BLACK);// plot.setBaseSectionPaint(Color.BLACK);// 设置无数据时的信息plot.setNoDataMessage("无对应的数据,请重新查询。

JFreeChart_介绍

JFreeChart_介绍




下载 解包 运行演示示例 编译源代码 产生JavaDoc文档
下载完JFreeChart压缩文件之后,我们需要将 该压缩文件解开。我们可以将文件解压到指定 的目录下面。 Linux/Unix环境下解压 Windows环境下解压 文件目录说明
在Linux/Unix环境下解压文件,使用下面命 令: Tar xvzf jfreechart-1.0.x.tar.gz 该命令将JFreeChart所有的文件包括源代码, 运行jar文件和doc文档解压到JFreeChart目录 下面
解压后的jfreechart目录下面,有许多文件和文 件夹,列表如下:
应当花一部分时间来熟悉这些文件,并详细阅 读README.txt文件。



下载 解包 运行演示示例 编译源代码 产生JavaDoc文档
在解压的文件中,有一个实例演示应用包含了 JFreeChart产生的大量图表演示示例。输入下 面命令可以运行该应用: Java –jar jfreechart-1.0.x-demo.jar 实例的源代码跟JFreeChart开发指南一并发 行,是收费的







介绍 饼图(Pie Charts) 直方条形图(Bar Charts) 折线图(Line Charts) XY(散点图) 时序图 柱状图 面积图 差异图



梯形图 甘特图 多轴图 复合/覆盖图 开发远景
有许多使用JFreeChart创建的图表实例,对 JFreeChart产生的图表类型做了概述,运行实 例命令如下: java -jar jfreechart-1.0.6-demo.jar
可以使用一个InternalXYDataset(XYDataset的 另一个扩展)数据产生柱状图:

JFreeChart使用详细教程

JFreeChart使用详细教程

1页

JFreeChart的下载与使用
JFreeChart是开放源代码的图形报表组件(开源 站点上的一个Jave项目),其主页为 /jfreechart/index.html。 在主页中单击DOWNLOAD导航链接将进入下 载页面,选择所要下载的JfreeChart版本即可进行下 载,目前最新版本为1.0.13。 在下载成功后将得到一个名为jfreechart1.0.13.zip的压缩包,此压缩包包含JFreeChart组件源 码、示例、支持类库等文件,将其解压缩后的文件 结构如右图所示。
3页

饼形图:一个划分为几个 饼形图 扇区的圆形图表,用于描述量、 频率或百分比之间的相对关系。 在饼图中,每个扇区的弧长 (以及(圆心角)和面积)大 小为其所表示的数量的比例。 这些扇区合在一起刚好是一个 完全的圆形。顾名思义,这些 扇区拼成了一个切开的饼形图 案。
JFreeChart开发前准备
开发前的准备,JfreeChart开发环境的搭建分为两步:导入 JFreeChart组件包;配置JFreeChart。 1、导入JFreeChart包:导入在lib目录下的jfreechart1.0.13.jar、jcommon-1.0.16.jar两个Jar包到工程。 2、配置JFreeChart: JFreeChart组件能够成.JPEG、.PNG 格式的图片,其输出方式可以直接存储在硬盘中,也可以交给 JFreeChart组件进行管理。在Web应用中,所生成的图形报表一 般均为动态图表,如果对每次生成的图表都进行直接存储,将
14页

通过此方法生成图片后,调用已注册的JFreeChart提供的 Servlet类DisplayChart,即可获取图片的相对路径。 输出图片在Jsp中的应用关键代码如下,可参照该代码将 其运用到servlet或Struts2的Action中。

JFreeChart使用方法

JFreeChart使用方法

JFreeChart使用方法概述1.JFreeChart Itext StrutsJFreeChartJFreeChart(/) 主要是用来制作各种各样的图表,包括:饼图、柱状图( 普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。

本文中使用的是jfreechart-1.0.13.jar。

iTextiText(/) 是一个能够快速产生PDF 文件的Java 类库,与Servlet 有很好的给合,可以非常方便完成PDF 输出,最新的版本是iText-5.0.4.jar。

如果需要在报表中支持中文显示,还需要下载iTextAsian.jar。

2.JFreeChart配置3.JFreeChart相关资料JFreeChart使用基础/view/0ff1f8e8e009581b6bd9ebbc.html?from=rec&pos=2&weight=2&lastweight=0&count=2JFreeChart乱码修改http://www.zihou.me/html/2009/12/17/708.htmlJFreeChart与Itext 生成PDF图片/articles/42891.shtmlJFreeChart使用框架创建数据集柱状图数据集的获取DefaultCategoryDataset类例子:CategoryDataset dataset =DatasetUtilities.createCategoryDataset(rowKeys, // String[]{柱子的名称} 位于说明框columnKeys, // String[]{柱子组名称} 位于X轴data) // Double型2维数组折线图的数据集的获取DefaultCategoryDataset类例子:CategoryDataset dataset =DatasetUtilities.createCategoryDataset(rowKeys, // String[]{每一条线的名称} 位于说明框columnKeys, // String[]{每一个节点名称} 位于X轴data) // Double型2维数组,饼图的数据集的获取DefaultPieDataset类例子:DefaultPieDataset dataset = new DefaultPieDataset();dataset.setValue(“分饼的名称”, “分饼的数据”);创建JFreeChart对象通过制图工厂ChartFactroy创建JFreeChart对象://创建一个常规的柱形图对象Public static JFreeChart createBarChart()例子:JFreeChart chart = new ChartFactroy. createBarChart(chartTitle, // 图表标题xName, // 目录轴的显示标签yName, // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)true, // 是否生成工具true// 是否生成URL链接)//创建一个常规的饼形图对象Public static JFreeChart createPieChart()例子:JFreeChart chart = ChartFactory.createPieChart(chartTitle, // chart titledataset,// datatrue,// include legendtrue,false)//创建一个常规的折线图对象Public static JFreeChart createLineChart()例子:JFreeChart chart = ChartFactory.createLineChart(chartTitle, // 图表标题xName, // X轴的显示标签yName, // Y轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)true, // 是否生成工具true) // 是否生成URL链接获取图片:1.在F:\工具\Tomcat\Tomcat6.0\webapps\gms\web\report\images\temp 目录下生成图片:生成JFreeChart组件所绘制的图片:调用ChartUtilities类的saveChartAsPNG()方法声称.png格式的图片Public static String saveChartAsPNG(84437JFreeChart chart, //JFreeChart对象Int width, //生成图片的宽度Int height, //生成图片的高度HttpSession sseion) // HttpSession对象显示图片:在JSP中使用图片:例子:<%String filename = ChartUtilities. saveChartAsPNG(Chart,500,700,Session)String graphURL = request.getContextPath()+“/Servlet/DisplayChart?filename=”+filename;%><img src="<% = graphURL %>">2.采用输出流方式获取图片,不会产生垃圾文件生成JFreeChart组件所绘制的图片:调用ChartUtilities类的 writeChartAsPNG()方法可以将图片直接输出到页面并运用到servlet或Struts2的Action中,不用存储到硬盘例子:ChartUtilities.writeChartAsPNG(response.getOutputStream(), //选择servlet方式输出图片chart, //生成的JFreeChart的对象700, //生成图片的宽度500) //生成图片的高度显示图片:在JSP上把图片的src请求路径设置为产生输出流的action即可例子:<img src="/JfreeChart.action"> JFreeChart 调整:柱状图调整:1.整体的调整获取plotCategoryPlot plot = chart.getCategoryPlot();// 设置横虚线可见plot.setRangeGridlinesVisible(true);// 虚线色彩plot.setRangeGridlinePaint(Color.gray);// 数据轴精度NumberAxis vn = (NumberAxis) plot.getRangeAxis();// 数据轴数据标签的显示格式DecimalFormat df = new DecimalFormat("#0.00");vn.setNumberFormatOverride(df);2.X轴调整获取X轴CategoryAxis domainAxis = plot.getDomainAxis();// X轴标题字体设置domainAxis.setLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12));//X轴数值字体设置domainAxis.setTickLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12));//设置X轴文字倾斜度domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 3.0));// X轴上的Lable 是否完整显示domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 设置距离图片左端距离domainAxis.setLowerMargin(0.1);// 设置距离图片右端距离domainAxis.setUpperMargin(0.1);调整完成后要将X轴set 到plot 中plot.setDomainAxis(domainAxis);3.Y轴调整获取Y轴ValueAxis rangeAxis = plot.getRangeAxis();// Y轴标题字体设置rangeAxis.setLabelFont(labelFont);//Y轴数值字体设置rangeAxis.setTickLabelFont(labelFont);// 设置最高的一个Item 与图片顶端的距离rangeAxis.setUpperMargin(0.15);// 设置最低的一个Item 与图片底端的距离rangeAxis.setLowerMargin(0.15);调整完成后要将Y轴set 到plot 中plot.setRangeAxis(rangeAxis);4.背景调整// 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确)plot.setBackgroundPaint(new Color(255, 255, 204))// 设置柱子宽度renderer.setMaximumBarWidth(0.05);// 设置柱子高度renderer.setMinimumBarLength(0.2);// 设置柱子边框颜色renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱子边框可见renderer.setDrawBarOutline(true);// // 设置柱的颜色renderer.setSeriesPaint(0, new Color(204, 255, 255));renderer.setSeriesPaint(1, new Color(153, 204, 255));renderer.setSeriesPaint(2, new Color(51, 204, 204));// 设置每个地区所包含的平行柱的之间距离renderer.setItemMargin(0.0);// 显示每个柱的数值,并修改该数值的字体属性renderer.setIncludeBaseInRange(true);renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());renderer.setBaseItemLabelsVisible(true);plot.setRenderer(renderer);// 设置柱的透明度plot.setForegroundAlpha(1.0f);//设置图片背景色chart.setBackgroundPaint(Color.white);5.注意问题:1.在调整柱形图的过程中在设置柱子颜色的时候,设置的数量不得大于柱子量2.数据中说明文字的数据个数要等于设置的分组数量3.数据中列的数量要等于X轴列的数量饼图的调整// 使下说明标签字体清晰,去锯齿chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);// 图片背景色chart.setBackgroundPaint(Color.white)// 设置图标题的字体重新设置titleFont font = new Font("隶书", Font.BOLD, 25);TextTitle title = new TextTitle(chartTitle);title.setFont(font);chart.setTitle(title);// 指定饼图轮廓线的颜色plot.setBaseSectionOutlinePaint(Color.BLACK);plot.setBaseSectionPaint(Color.BLACK);// 设置无数据时的信息plot.setNoDataMessage("无对应的数据,请重新查询。

Jfreechart 图表开发文档

Jfreechart 图表开发文档

Jfreechart 图表开发文档目标简介:只要按要求写好sql 语句就能生成相应的图表。

实现步骤:1.置图表属性2.写sql 语句3.取图表数据对象4.生成图表5.显示图表详细说明:1.置图表属性图表属性类中定义了图表的属性信息,如,图表标题,图表热链接,是否3D效果显示code:String title = "统计图2";ChartProperty cp = new ChartProperty(title);cp.setChart3D(false);cp.setHitUrl("/servlet/_test");2.写sql 语句sql语句要求:饼型图,柱型图要求sql 语句的select 字段,第一个为String 型,第二个为number 型,曲线图第一个字段要求为日期型,第二个字段为number型,可以有第三个字段,第四个字段…..(n个)这个可生成多曲线图表。

code:1.String sql = "select basepricetype, sum(saleprice)" +" from tb_builsrc_contractinfo" +" where affirm_date >= to_date('2004-06-01', 'yyyy-MM-dd') and" +" affirm_date <= to_date('2004-06-02', 'yyyy-MM-dd')" +" group by basepricetype";2.sql = "select affirm_date, baseprice, saleprice" +" from tb_builsrc_contractinfo" +" where affirm_date >= to_date('2004-06-01 00:00:00', 'yyyy-MM-dd HH24:mi:SS') and " +" affirm_date <= to_date('2004-06-01 23:59:59', 'yyyy-MM-dd HH24:mi:SS')" +" order by affirm_date ";3.取图表数据对象生成不同图表所在生成的jfreechart 数据对象不同,jfreechart提供三个接口,饼型图为,PieDataset,要柱型图为CategoryDataset, 曲线图为XYDataset,同时在交易系统包中提供有DbChartCenter类,静态封装生成不同图表。

JFreeChart生成各种统计图小结

JFreeChart生成各种统计图小结

1 柱状图
org.jfree.chart.ChartFactory这个工厂类有createBarChart、createStackedBarChart、
createBarChart3D、createStackedBarChart3D,这几个工厂方法创建不同类型的柱状图,
C)org.jfree.chart.servlet.ServletUtilities有一系列方法,
例如,saveChartAs*;saveChartAs*是把图表按照不同的形式存储为图象;sendTempFile方法被重载了很多次,
用于把文件流发送response。
下面以柱状图和饼图为例,介绍图形创建方法。
象。C)org.jfree.chart.servlet.ServletUtilities有一系列方法,例如,
saveChartAs*;saveChartAs*是把图表按照不同的形式存储为图象;sendTempFile方法被重载了很多次,
用于把文件流发送response。下面以柱状图和饼图为例,介绍图形创建方法。
通过JDBC可动态显示任何数据库数据,结合Itext可以输出至PDF文件。JFreeChart主要是由三个类构成:A)
org.jfree.chart.servlet.ChartDeleter继承自HttpSessionBindingListener,用于实现当Session关闭时,
删除临时目中的图象文件。B)org.jfree.chart.servlet.DisplayChart继承自Httpservlet用于处理显示图
JFreeChart生成各种统计图小结
JFreeChart是一个开源的JAVA项目,它主要用来开发各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱

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

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

用JFreeChart增强JSP报表的用户体验之马矢奏春JFreeChart是一组功能强年夜、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等.它能够用在Swing和Web等中制作自界说的图表或报表,而且获得广泛的应用.本文将通过引领读者学习在JFreeChart中饼图、柱状图和曲线图的进阶应用,来到达熟练使用JFreeChart的目的.一.下载与环境配置1. 下载JFreeChartJFreeChart是开放源代码的免费软件,可是它的支持文档需要付费才华获得.其下载地址为:/project /showfiles.php?group_id=15494,以后最新版本为1.0.6.笔者下载的是1.0.6最新版.说明:1)source目录:为jfreechart的源码目录;2)lib目录:为包目录,我们需要关注的包为jfreechart-1.0.6.jar、gnujaxp.jar和jcommon-1.0.10.jar这三个包;3)根目录下的jfreechart-1.0.6-demo.jar是例子法式,年夜家双击后可看到其中有很多例子的运行结果.2. 环境配置笔者的开发环境如下:MyEclipse:5.1.1 GA为了后续的“用JFreeChart创立基于Web的图表”的一个例子的展示,我们在MyEclipse中创立一个名为jfreechart的Web 工程.将下载的JFreeChart1.0.6下lib目录下的jar包拷贝到W ebRoot/WEB-INF/lib目录下.另外还需要在web.xml文件中增加如下配置:servlet servletnameDisplayChartservletname servletclass orgjfreechartservletDisplayChartservletclass servlet serv letmapping servletnameDisplayChartser vletname urlpatternDisplayCharturlpat tern servletmapping二.柱状图在WebRoot目录下建立bar目录,用来寄存柱状图的各个例子.首先在该目录下建立一个sample1.jsp文件,让我们来看一个简单的柱状图的例子,修改后的sample1.jsp的内容如下所示:<%@ page contentType="text/html;charset=GBK"%><%@ page import="org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChar t, org.jfree.chart.plot.PlotOrientat ion, org.jfree.chart.servlet.ServletUt ilities, org.jfree.data.category.DefaultCatego ryDataset"%><%DefaultCategoryDataset dataset = new DefaultCategory Dataset();dataset.addValue(610, "广州", "猪肉");dataset.addValue(220, "广州", "牛肉");dataset.addValue(530, "广州", "鸡肉");dataset.addValue(340, "广州", "鱼肉");JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图", "肉类","销量",dataset,PlotOrientation.VERT ICAL,false,Augusthttp??localhost??????jfreechartbarsample jsp,可看到如下柱状图:上面的这个柱状图比力简单,稍显单调,在有些情况下,我们需要用分歧颜色来暗示分歧的种类,或者在种类上标上具体数值,亦或需要加上??D水晶效果.下面让我们来做更深一步的探讨.接下来让我们看一个用分歧颜色来暗示欠亨种类的例子.在WebRoot的bar目录下新建sample jsp页面,将其代码修改如下:August@ page contentType??2021texthtml??charset??GBK2021August August@ page import??2021orgjfreechartChartFactoryorg.jfree.chart.JFreeC hart,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.servlet.ServletUtilities,org.jfree.data.category.CategoryDataset,org.jfree.data.general.DatasetUtilities"%><%double[][] data = newdouble[][] {{1310}, {720}, {1130}, {440}};String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};String[] columnKeys = {""};CategoryDataset dataset = DatasetUtilities.createCate goryDataset(rowKeys, columnKeys, data); 2021销量2021 datasettruefalsefalse????String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;%><img src="<%= graphURL %>"width=500 height=300 bord er=0 usemap="#<%= filename %>">该页面的运行效果如下图所示:比较该例与前例,可看出createBarChart3D的倒数第三个参数修改成了true,该参数可用来显示下方的:.上两例我们显示的只是一个城市的肉类销量,有时候我们有比较显示多个城市的分歧肉类,只要将上例稍作修改即可.例如要在图中暗示广州、深圳、东莞、佛山四个城市的四个肉类的销售情况,只需要将如下三句稍做修改:double[][] data = newdouble[][] {{1310}, {72 0}, {1130},例如修改成:double[][] data = newdouble[][] {{1310, 1220, 111 0, 1000},在运行该jsp页面,可看到如下界面:在上述几例中,在某个柱子上都没有显示相应的数值,下面让我们为每个柱子都加上它的数值,我们新建一个sample 4.jsp页面,其内容如下:<%@ page contentType="text/html;charset=GBK"%><%@ page import="org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChar t, org.jfree.chart.plot.PlotOr ientation, org.jfree.chart.servlet.Ser vletUtilities, org.jfree.data.category.Categor yDataset,org.jfree.data.general.DatasetUtilities,org.jfree.chart.plot.*,bels.*,org.jfree.chart.renderer.category.BarRenderer3D,java.awt.*,org.jfree.ui.*, org.jfree.chart.axis.AxisLoca tion"%><%double[][] data = newdouble[][] {{1310, 1220, 111 0, 1000},{720, 700, 680, 640},{1130, 1020, 980, 800},true,true,false);CategoryPlot plot = chart.getCategoryPlot();//设置网格布景颜色plot.setBackgroundPaint(Color.white);//设置网格竖线颜色plot.setDomainGridlinePaint(Color.pink);renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnch or.BASELINE_LEFT));renderer.setItemLabelAnchorOffset(10D);//设置每个地域所包括的平行柱的之间距离//renderer.setItemMargin(0.3);plot.setRenderer(renderer);//设置地域、销量的显示位置//将下方的“肉类”放到上方plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT); //将默认放在左边的“销量”放到右方plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);String filename = ServletUtilities.saveChartAsPNG(ch art, 700, 400, null, session);String graphURL = request.getContextPath() + "/Disp layChart?filename=" + filename;%><img src="<%= graphURL %>"width=700 height=400 bord er=0 usemap="#<%= filename %>">运行效果如下所示:注意:jfreechart的很多版本不兼容,请年夜家在运行此例时确认下载了对应的版本.三.饼图在WebRoot目录下建立名为pie的子目录,用来寄存本教程中饼图的实例jsp页面.下面让我们来看一个简单的三维饼图.首先在pie目录下建立一个名为sample1.jsp的页面.在JFreeChart中,与饼图绘制密切相关的类如下:1)PiePlot饼图绘制类,可以用来设置饼图的相关属性.例如:PiePlot pieplot = (PiePlot)jfreechart.getPlot(); pieplot.setLabelFont(new Font("SansSerif", 0, 12)); pieplot.setNoDataMessage("No data available"); pieplot.setCircular(false);pieplot.setLabelGap(0.02D);2)DefaultPieDataset默认的饼图数据集类,用来存储饼图显示的相关数据信息.例如:DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("品德", new Double(0.2D));dataset.setValue("体育", new Double(0.2D));dataset.setValue("音乐", new Double(0.2D)); datasetsetValue 2021其余成果2021new Double??D????????)ChartFactory可利用该制图工厂类createPieChart来创立一个饼图的JFreeChart对象,例如:JFreeChart??jfreechart??????ChartFactorycreatePieChart 2021饼图示例2021??dataset??true??true??false??????下面让我们看一个简单的例子,修改sample jsp的内容如下:August@ page contentType??2021texthtml??charset??GBK2021AugustAugust@ page import??2021orgjfreechart??org.jfree.chart.plot.P iePlot, org.jfree.data.general. DefaultPieDataset,org.jfree.chart.servlet.ServletUtilities,java.awt.*"%><%//设置数据集DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("初中高级法式员", 0.55);dataset.setValue("项目经理", 0.1);dataset.setValue("系统分析师", 0.1);dataset.setValue("软件架构师", 0.1);dataset.setValue("其他", 0.2);//通过工厂类生成JFreeChart对象JFreeChart chart = ChartFactory.createPieChart3D("IT 行业职业分布图", dataset, true, false, false); PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setLabelFont(new Font("宋体", 0, 12));//没有数据的时候显示的内容pieplot.setNoDataMessage("无数据显示");pieplot.setCircular(false);pieplot.setLabelGap(0.02D);String filename = ServletUtilities.saveChartAsPNG(ch art, 500, 300, null, session);String graphURL = request.getContextPath() + "/Disp layChart?filename=" + filename;%><img src="<%= graphURL %>"width=500 height=300 bord er=0 usemap="#<%= filename %>">可以看出,饼图的绘制与柱状图的绘制类似,该例的运行效果如下:有时候我们还想知道某块所占的具体分值,或者需要突出显示某一块.这时候需要对上例进行部份修改:dataset.setValue("其他", 0.2);后的那段改成://通过工厂类生成JFreeChart对象JFreeChart chart = ChartFactory.createPieChart3D("IT 行业职业分布图", dataset, true, false, false); PiePlot pieplot = (PiePlot) chart.getPlot(); pieplot.setLabelFont(new Font("宋体", 0, 12));//没有数据的时候显示的内容pieplot.setNoDataMessage("无数据显示");pieplot.setCircular(false);setExplodePercent方法很重要,它将Label为某名称的某块挖出来突出显示,而后两句实现的效果是在“初中高级法式员”等名称后加上百分比,改成“初中高级法式员=55%”等.加上如上的代码后,同时还需要将相关的两个java包:b els.StandardPieSectionLabelGenerator和java.text.NumberFo rmat引入到该jsp页面中.此时的运行结果如下:通过JFreeChart还可以提供漂亮的水晶饼图效果,接着让我们新建一个sample3.jsp页面来体验一下超炫美图吧.修改sample3.jsp页面如下:August设置数据集设置开始角度August利用setForegroundAlpha()方法可以设置3D饼图的透明度,利用setStartAngle()可以设置其开始角度,利用setDirectio n()方法可以设置其方向.该例的运行效果如下图所示:四.曲线图接着我们来介绍曲线图的使用.在笔者日常的开发工作中,曲线图用得最多,它可以用来绘制趋势图、统计分析等.首先我们在We bRoot下建立一个line目录,用来寄存曲线图实例的jsp页面.我们在该目录下建立sample1.jsp页面来做一个简单的曲线图的例子.在开始编码前,让我们来看看与画曲线图密切相关的几个类:1)TimeSeriesCollection曲线数据的集合.2)TimeSeries曲线信息序列.3)ChartFactory可以利用该类的createTimeSeriesChart方法来创立曲线的J FreeChart对象.在下例中,我们显示阿蜜果的blog在2007年度各月份的访问量情况,修改后的sample1.jsp的内容如下:<%@ page contentType="text/html;charset=GBK"%>August@ page import ??2021orgjfreechartChartFactory orgjfreechartJFreeChart orgjfreechartservletServletUtilities orgjfreecharttitleTextTitleorgjfreedatatimeTimeSeriesorgjfreedatatimeMonth orgjfreedatatimeTimeSeriesCollectionjavaawtFont2021AugustAugust访问量统计时间线TimeSeries timeSeries ??new TimeSeries 2021阿蜜果blo g访问量统计2021Monthclass????时间曲线数据集合TimeSeriesCollection lineDataset ??new TimeSeriesCo llection ????构造数据集合timeSeriesadd new Month????????timeSeriesadd new Month??????????timeSeriesadd new Month ????????????timeSeriesadd new Month ????????????timeSeries.add(new Month(5, 2007), 8200); timeSeries.add(new Month(6, 2007), 12200); timeSeries.add(new Month(7, 2007), 13200); timeSeries.add(new Month(8, 2007), 8300); timeSeries.add(new Month(9, 2007), 12400); timeSeries.add(new Month(10, 2007), 12500); timeSeries.add(new Month(11, 2007), 13600);timeSeries.add(new Month(12, 2007), 12500);lineDataset.addSeries(timeSeries);JFreeChart chart = ChartFactory.createTimeSeriesChart ("访问量统计时间线", "月份", "访问量", lineDataset, t rue, true, true);//设置子题目TextTitle subtitle = new TextTitle("2007年度", ne w Font("黑体", Font.BOLD, 12));chart.addSubtitle(subtitle);//设置主题目chart.setTitle(new TextTitle("阿蜜果blog访问量统计", new Font("隶书", Font.ITALIC, 15)));chart.setAntiAlias(true);String filename = ServletUtilities.saveChartAsPNG(cha rt, 500, 300, null, session);String graphURL ??requestgetContextPath ??2021Dis playChart?filename??2021filename??Augustimg src??2021August??graphURL August2021width???? height????border??usemap??202121August??filename August2021运行后的曲线效果如下图所示:??有时我们需要显示各数据点及其数值,这是我们需要对上例进行一点改动,在JFreeChart??chart??????ChartFactorycreateT imeSeriesChart……后,TextTitle??subtitle??????new??TextTitl e……前加上如下的代码:XYPlot plot ?? XYPlot??chartgetPlot ???? XYLineAndShapeRenderer xylineandshaperenderer ??XYL ineAndShapeRenderer??plotgetRenderer????设置网格布景颜色plotsetBackgroundPaint Colorwhite????设置网格竖线颜色plotsetDomainGridlinePaint Colorpink????设置网格横线颜色plotsetRangeGridlinePaint Colorpink????设置曲线图与xy轴的距离plotsetAxisOffset new RectangleInsetsDDDD??????//设置曲线是否显示数据点xylineandshaperenderer.setBaseShapesVisible(true);//设置曲线显示各数据点的值XYItemRenderer xyitem = plot.getRenderer(); xyi tem.setBaseItemLabelsVisible(true); xyitem.setBaseP ositiveItemLabelPosition(new ItemLabelPosition(ItemLabel Anchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));xyitem.setBaseItemLabelGenerator(new StandardXYItemLabe lGenerator());xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 1 4));plot.setRenderer(xyitem);并引入了一些另外的包,引入包的语句酿成:August@ page import ??2021orgjfreechartChartFactory orgjfreecharttitleTextTitle orgjfreedatatimeTimeSeriesorgjfreedatatimeMonth orgjfreedatatimeTimeSeriesCollection orgjfreechartplotXYPlot orgjfreechartrendererxyXYLineAndShapeRenderer javaawtColororg.jfree.ui.RectangleInsets,java.awt.Font,org.jfree.chart.renderer.xy.XYItemRenderer,org.jfree.chart.JFreeChart,org.jfree.chart.servlet.ServletUtilities,bels.*,org.jfree.ui.*"%>??运行该实例,效果如下所示:上面两例的曲线图都是单曲线的,有时候我们对两个曲线进行比力,例如对阿蜜果在??年度和??年度的blog访问量进行比力,在此种情况下,我们需要在一个曲线图中显示两个曲线.在此种情况下,我们只需要在sample jsp的基础上新建一个TimeSeries对象,给它添加数据后,将其添加到T imeSeriesCollection型数据集合对象中,修改后的法式主体部份如下所示:访问量统计时间线TimeSeries timeSeries????new TimeSeries 2021??年度2021Monthclass????TimeSeries timeSeries????new TimeSeries 2021??年度2021Monthclass????时间曲线数据集合TimeSeriesCollection lineDataset ??new TimeSeriesCo llection ????构造数据集合timeSeries??add new Month??????????timeSeries??add new Month??????????timeSeries??add new Month ?? ??????????timeSeries??add new Month ?? ??????????timeSeries??add new Month ??????????????timeSeries??add new Month ?? ??????????timeSeries??add new Month ?? ??????????timeSeries??add new Month ?? ????????????timeSeries??add new Month ?? ????????????timeSeries??add new Month ????????????timeSeries??add new Month ??????????????add new Month ????????????timeSeries??add new Month ????????timeSeries??add new Month ????????????add new Month ????????????timeSeries??add new Month ????????????timeSeries2007.add(new Month(5, 2007), 8200); timeSeries2007.add(new Month(6, 2007), 11200); timeSeries2007.add(new Month(7, 2007), 13200); timeSeries2007.add(new Month(8, 2007), 8300); timeSeries2007.add(new Month(9, 2007), 10400); timeSeries2007.add(new Month(10, 2007), 12500); timeSeries2007.add(new Month(11, 2007), 10600); timeSeries2007.add(new Month(12, 2007), 10500);lineDataset.addSeries(timeSeries2006);设置子题目设置主题目该例的运行效果如下:五.总结本文通过详尽的实例讲述了如何利用JFreeChart开发经常使用的柱状图、饼图和曲线图.从这些实例中可以看出,JFreeChart 是我们开发图表或报表的理想选择,它简单易用,而且容易理解,是我们开发的利刃.创作时间:二零二一年六月三十日。

如何导出PDF格式流程图?用对这个方法很简单

如何导出PDF格式流程图?用对这个方法很简单

如何导出PDF格式流程图?用对这个方法很简单
如何导出PDF格式流程图?相信很多人会再给客户传看资料的时候,往往需要将文件也好、流程图也好转成PDF格式,有人就会纠结怎么把流程图输出为PDF格式,其实方法很简单,选对网站,可以轻松解决这个问题,需要的小伙伴们一起往下看看!
我一般会借助网站——【迅捷画图】,来帮助我制作和导出流程图,这款网站支持导出多种格式,使用起来很方便。

首先,打开【迅捷画图】,点击创建流程图,或者点击模板库中的流程图模板,直接进入模板页面选择一个模板进行套用。

根据我们需要绘制的流程图,在搜索框中输入关键词,然后在出现的模板中,选择自己喜欢模板点击“在线编辑,”进入编辑页面。

编辑完成之后,点击页面右上角的导出,在导出的下拉菜单中会出现流程图能够导出的各种格式,在格式中选择我们需要的“PDF文件。


以上就是如何导出PDF格式流程图的方法了,感兴趣的小伙伴快打开迅捷画图,自己动手试试吧。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。




简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题

iText是一个能够快速产生PDF文件的java类库。 iText的主页下载地址是: /iText

简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题

首先,需要创建一个图表,我们创建一个时序图, 代码如下:

这里没有任何的特殊代码——事实上,可以使用创 建JFreeChart的其他对象替代上面的代码。

JFreeChart画图表时,仅仅使用Graphics2D定 义的方法。这就意味着JFreeChart可以将图表输 出到Graphics2D子类支持的任何设备。

iText 工具融入了PdfGraphics2D的一个类,这 就意味着iText使用Graphics2D类定义的方法产 生 PDF 内容。并且正如你在后面看到的,在PDF 格式中产生图表会变的非常的容易。


Байду номын сангаас
简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题

为了完成和演示应用实例,我们需要下面的jar文 件:

首先JFreeChart包括两个jar文件,其次iText需 要一个jar文件。




这里使用 Tahoma字体来显示标题。该字体的定义 文件(tahoma.ttf)在系统下面的目录下可以找到。 /opt/sun-jdk-1.4.2.08/jre/lib/fonts 现在使用代码说明,使用iText创建FontMapper 对象来使用Tahoma字体:

现在可以修改创建图表的代码,将图表的标题使 用该字体:



简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题


JFreeChart使用iText工具是非常容易的事情,因 为iText提供了Graphics2D的实现。在说明实例 应用之前,先回顾一下Graphics2D的类。 Java.awt.Graphics2D类,标准java2D API的一 部分。定义了在二维空间中大量画文本和图形的 方法。Graphics2D部分子类处理全部的转化细 节,从输出(文本和图形)到具体设置的映射转 化。

副标题的输出如下图所示。实例已经嵌入到PDF 文件中。因此本文演示的该小程序很好的展示了 这种类型的输出,给出了详细的步骤指南,便于 正确使用。



简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题

将一个 JFreeChart 生成图表转换成 PDF 格式文件, 使用的工具是 IText。后面用一个简单的实例说明 创建 PDF 文件的过程,该 PDF 文件包含了一个简 单的图表。生成的文件,可以使用 Acrobat 阅读 器来阅读,也可以使用支持 PDF 文件阅读的阅读 器来阅读。



简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题


Acrobat PDF是一款非常流行的电子文档阅读器。 可实现不同的硬件平台和软件应用程序之间的信 息共享,不受软件版本的不同和安装的字体的影响。 PDF 可以使用Adobe提供的一个免费工具 Acrodbat Reader来创建。Acrodbat Reader在 终端用户各种平台上是有效的,包括 GNU/Linux,Windows,Unix,Machintosh等。 如果你的系统上没有安装Acrodbat Reader,可 以到下面链接去下载: /products/acrobat/r eadstep.html

在writeChartAsPDF()方法的实现里面,创建了一 个自定义页面尺寸大小(匹配字符的需要尺寸)的 PDF文档。提前设置了改变了字符的尺寸、位置并 且在PDF文档中画出多个字符,以适应不同的页面 尺寸。

现在将使用saveChartAsPDF()方法很容易的实现 了将一个PDF数据发送到一个数据流上。简化了创 建文件输出流的过程,并且将该对象传给了 writeChartAsPDF()方法。代码如下:


在上面代码的方法里面,看到一些创建和代码iText 文档的代码,从文档中获得了一个 Graphics2D实例, 使用Graphics2D对象画出这个图表,并关闭了这个 文档。 同时也注意到方法的一个参数是FontMapper对象。 iText 使用FontMapper接口将java字体对象映射成 基本的字体对象。DefaultFontMapper类预先默认 映射为java本地化字体。如果希望用这些字体,使用 DefaultFontMapper构建缺省的对象即可,如果想 使用其他的字体(例如,支持一个特殊的字符集), 那么需要做一些额外的工作。后面将有介绍。

完成上面实例,运行实例,会产生一个PDF文档。 可以使用一个PDF浏览器(比如AcrobatReader (或者其他支持的阅读器,Gnome PDF Viewer)) 查看该文件,显示的界面如下图

大部分的PDF阅读器都提供了缩放技术,以允许更 进一步浏览图表。



简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题

上面的每一步代码都是必须的。上面的代码组合成 全部的代码如下(整个工程的代码都在这里,以便 可以看到所有的声明和内容):

在完成和运行上面的应用之前,记得修改PDF文件 的名称以满足要求。同时前面提到的jar也必须在的 classpath中。



简介 什么是Acrobat PDF IText Graphics2D 开始导出 实例应用 查看PDF文件 Unicode字符问题



背景 字体、iText和Java 映射第三方的字体



iText依照PDF规格来处理字体,这就对使用PDF 文件嵌入的字体来处理文件带来了非常大的方便 性,同时也需要自由读取定义文件的字体。 而java在字体类中汲取了部分字体格式的大部分 细节内容。 在iText中,为支持Graphics2D的实现画图功能, 实现从Java字体对象到BaseFont对象的映射字体 对象是非常有必要的。这就是FontMapper接口 所扮演的角色。

如果使用缺省的构建器构建了一个新的 DefaultFontMapper实例,那么总会带有Java规格 定义的本地字体映射。但是如果使用其他一些字— —并且必须使用Unicode之外的字符——那么需要 将其他的字符映射加入到DefaultFontMapper对象 中。



背景 字体、iText和Java 映射第三方的字体

下一步,将在一个 PDF 文件中保存一个图表的副 本: 下面有一些需要注意的问题: 首先,PDF文件名称是硬编码完成的,不能修改。 主要是在演示中,减少代码量。在实际应用中, 需要提供一些让用户指定文件名称与路径的方式, 比如弹出一个文件选择对话框。


其次,saveChartAsPDF()方法还未实现。为了创 建这个方法,先创建另一个更通用的 writeChartAsPDF().方法。该方法执行 saveChartAsPDF()方法需要的全部工作。但该方 法的输入参数是一个文件输出流而不是一个文件, 代码如下:
John Rain gjwm0826@





简介 图表实例 下载和安装JFreeChart 使用JFreeChart 饼图 直方条形图 折线图 时序图 定制图表 动态图 图表工具条 图表条目标签 多轴和数据源图表 组合图表 数据源和JDBC 导出图表为PDF格式 导出图表为SVG格式 Applet Servlets JFreeChart相关技术 包

在JFreeChart和iText中使用Unicode字符集是没有 任何问题的。在上面的例子中需要做一些修改来演 示如何做到这些。
◦ 背景 ◦ 字体、iText和Java ◦ 映射第三方的字体



Java使用同一的字符集译码成文本字符串。这种译码对每个 字符使用16进制。这就意味着将有65,536个有效的不同 字符集(在Unicode标准中定义了大约38,000个字符)。 可以在JFreeChart和iText中使用这些字符,但归于一条:那 就是只要使用字体,包括用来显示的文本或者不显示的,都 必须定义这些字符。许多字体并不完全显示成Unicode字符 集。下面的网站含有那些的确支持 Unicode 的字体的有用 信息:/unifonts.htm 可以成功的提取使用tahoma.ttf字体。实际上,下面实例中 将使用该字体,Tahoma字体并不是支持Unicode定义的每 一个字符。因此,如果想使用一种特殊的字体时,就得必须 选Unicode中一种相近的字体来代替。系统上都安装了字体 Unicode MS(arialuni.ttf)——该字体完全支持Unicode字符 集,尽管这种字体的定义的文件特别大(大约24M)
相关文档
最新文档