饼图 package cn.demo; import java.awt.Font; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.*; import org.jfree.data.general.DefaultPieDataset; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot3D; import org.jfree.chart.title.TextTitle; /** * 用于演示饼图的生成 * @author Winter Lau */ public class PieDemo { public static void main(String[] args) throws IOException{ DefaultPieDataset data = getDataSet(); JFreeChart chart = ChartFactory.createPieChart3D("cd种类对照图",data, true,true,false); //3D饼状图chart对象PiePlot3D PiePlot3D piePlot3D=(PiePlot3D)chart.getPlot(); //处理中文乱码 //获取标题 TextTitle textTitle=chart.getTitle(); textTitle.setFont(new Font("黑体",Font.BOLD,18)); //处理底部中文乱码 chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,15)); //处理图表区域中文乱码 piePlot3D.setLabelFont(new Font("黑体",Font.BOLD,15)); //设置扇区标签显示格式:关键字:值(百分比) piePlot3D.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}:{1}({2})")); final ChartFrame cf=new ChartFrame("cd种类和数量提示",chart); cf.addWindowListener(new WindowAdapter(){ public void windowClosed(final WindowEvent e) { cf.dispose(); System.exit(0); } }); cf.setVisible(true); cf.pack(); //写图表对象到文件,参照柱状图生成源码 } /** * 获取一个演示用的简单数据集对象 * @return */ private static DefaultPieDataset getDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("流行音乐",6); dataset.setValue("民乐",6); dataset.setValue("外国歌曲",1); dataset.setValue("摇滚乐",8); return dataset; } } 折线图 package cn.demo; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Rectangle; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.*; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.LineAndShapeRenderer; /** * 用于演示折线图的生成 * @author Winter Lau */ public class LineDemo { /** * * 功能: * 对应工厂方法为 createLineChart3D * @param args = * @throws IOException * */ public static void main(String[] args) throws IOException{ CategoryDataset data = getDataSet(); JFreeChart chart=ChartFactory.createLineChart( "cd类别和数量对照表", //图表的标题 "cd类别", //目录轴显示的标题 "数量", //数值轴显示的标题 data, //数据集 PlotOrientation.VERTICAL, //图表的方向 true, //是否显示图例,(对于简单的柱状图必须为false) true, //是否生成工具提示 false); //是否生成url连接 //恢复到原始类型的图表 CategoryPlot categoryPlot=chart.getCategoryPlot(); //处理中文乱码 //设置主标题 chart.getTitle().setFont(new Font("黑体",Font.BOLD,18)); //设置子标题 chart.getLegend().setItemFont(new Font("黑体",Font.PLAIN,15)); //获取图表的y轴 NumberAxis numberAxis=(NumberAxis)categoryPlot.getRangeAxis(); numberAxis.setTickLabelFont(new Font("黑体",Font.PLAIN,15)); numberAxis.setLabelFont(new Font("黑体",Font.PLAIN,15)); numberAxis.setAutoTickUnitSelection(false); NumberTickUnit numberTickUnit=new NumberTickUnit(1); numberAxis.setTickUnit(numberTickUnit); //获取图表的x轴 CategoryAxis categoryAxis=(CategoryAxis)categoryPlot.getDomainAxis(); categoryAxis.setLabelFont(new Font("黑体",Font.PLAIN,15) ); categoryAxis.setTickLabelFont(new Font("黑体",Font.PLAIN,15)); //获取图表区域对象 LineAndShapeRenderer lineAndShapeRenderer=(LineAndShapeRenderer)categoryPlot.getRenderer(); //设置线条的粗细 BasicStroke realLine = new BasicStroke(1.6f, BasicStroke.CAP_SQUARE, //在线段端点加矩形进行修饰,矩形的宽度为线段宽度的一半,矩形的高度为线段的宽度 BasicStroke.JOIN_BEVEL //将组成折点的两条线段的外侧延长至相交,然后填充被包的区域 ); //设置线条的粗细 lineAndShapeRenderer.setSeriesStroke(0, realLine); //指定分类图形的形状(如折线图的点) Rectangle shape=new Rectangle(8,8); lineAndShapeRenderer.setSeriesShape(0, shape); //设置为可见 lineAndShapeRenderer.setSeriesShapesVisible(0, true); //设置折线点的数值 lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); lineAndShapeRenderer.setBaseItemLabelsVisible(true); final ChartFrame cf=new ChartFrame("cd类别和数量提示",chart); cf.addWindowListener(new WindowAdapter(){ public void windowClosed(final WindowEvent e) { cf.dispose(); System.exit(0); } }); cf.setVisible(true); cf.pack(); } /** * 获取一个演示用的简单数据集对象 * @return */ private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset=new DefaultCategoryDataset(); dataset.addValue(6, "类别", "流行音乐"); dataset.addValue(6, "类别", "民乐"); dataset.addValue(1, "类别", "外国歌曲"); dataset.addValue(8, "类别", "摇滚乐"); return dataset; } } 柱状图 package cn.demo; import java.awt.Color; import java.awt.Font; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer3D; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; /** * 利用Jfreechart创建柱状图 * @author Administrator * @date Jul 16, 2009 * @package cn.demo * @filename BarDemo.java */ public class BarDemo { public static void main(String[] args) { CategoryDataset dataset=getDataSet(); //利用JFreeChart的工厂类创建柱状图 JFreeChart chart=ChartFactory.createBarChart3D( "cd类别和数量对照表", //图表的标题 "cd类别", //目录轴显示的标题 "数量", //数值轴显示的标题 dataset, //数据集 PlotOrientation.VERTICAL, //图表的方向 true, //是否显示图例,(对于简单的柱状图必须为false) true, //是否生成工具提示 false); //是否生成url连接 /*********************************************************************************/ //获取图表区域对象 CategoryPlot plot=chart.getCategoryPlot(); //设置柱子的属性 BarRenderer3D renderer=(BarRenderer3D)plot.getRenderer(); //指定分类的图形边框的线条颜色 renderer.setSeriesOutlinePaint(0, Color.yellow); //指定分类图形的颜色 renderer.setSeriesPaint(0, Color.red); //显示每个柱的数值,并修改该数值的字体属性 renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true); //renderer.setSeriesItemLabelsVisible(0,Boolean.TRUE); renderer.setSeriesItemLabelFont(0, new Font("黑体",Font.BOLD,12));//12号黑体加粗 renderer.setSeriesItemLabelPaint(0,Color.black);//字体为黑色 //设置柱体的宽度 renderer.setMaximumBarWidth(0.1); /*********************************************************************************/ //获取图表区域的y轴 NumberAxis valueAxis=(NumberAxis)plot.getRangeAxis(); //设置坐标轴不是自动获取刻度 valueAxis.setAutoTickUnitSelection(false); //数字刻度 NumberTickUnit unit=new NumberTickUnit(1); //设置y轴的数字刻度 valueAxis.setTickUnit(unit); /*********************************************************************************/ //获取图表区域的x轴 CategoryAxis CategoryAxis=plot.getDomainAxis(); //分类轴下(左)边距 CategoryAxis.setLowerMargin(0.1); //分类轴上(右)边距 CategoryAxis.setUpperMargin(0.1); //图表横轴与标签的距离(10像素) CategoryAxis.setCategoryLabelPositionOffset(5); //横轴标签之间的距离20% CategoryAxis.setLowerMargin(0.1); /*********************************************************************************/ //处理中文乱码****************************************************** //设置底部中文乱码 chart.getLegend().setItemFont(new Font("黑体",Font.PLAIN,15)); //处理文本标题 TextTitle title=chart.getTitle(); title.setFont(new Font("黑体",Font.BOLD,18)); //设置x轴的标题上文字 CategoryAxis.setTickLabelFont(new Font("黑体",Font.PLAIN,15)); //设置x轴的标题文字 CategoryAxis.setLabelFont(new Font("黑体",Font.PLAIN,15)); //设置Y轴的标题上文字 valueAxis.setTickLabelFont(new Font("黑体",Font.PLAIN,15)); //设置y轴的标题文字 valueAxis.setLabelFont(new Font("黑体",Font.PLAIN,15)); //处理中文乱码***************************************************** try { File file = new File("D:/student.jpeg"); ChartUtilities.saveChartAsJPEG(file,chart,400,300);//把报表保存为文件 }catch (Exception e) { String s = e.getLocalizedMessage(); s = e.getMessage(); s = e.toString(); } //用图形化的方式显示图表 final ChartFrame frame=new ChartFrame("cd类别和数量提示",chart); frame.addWindowListener(new WindowAdapter(){ public void windowClosed(final WindowEvent e) { frame.dispose(); System.exit(0); } }); frame.setVisible(true); frame.pack(); } /** * * 功能:设置柱状图所用的数据集 * * @return * */ private static CategoryDataset getDataSet(){ DefaultCategoryDataset dataset=new DefaultCategoryDataset(); dataset.addValue(6, "类别", "流行音乐"); dataset.addValue(6, "类别", "民乐"); dataset.addValue(1, "类别", "外国歌曲"); dataset.addValue(8, "类别", "摇滚乐"); return dataset; } } 动态时尚报表: http://u.115.com/file/f54d539c80下载地址