使用jfreechart生成柱状图、折线图、和饼状图
来源:互联网 发布:js 数组最大值下标 编辑:程序博客网 时间:2024/05/18 02:51
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。下面我就详细介绍如何使用jfreechart生成柱状图、折线图、和饼状图。
步骤:
①、导入其相应的jcommon-1.0.16.jar和jfreechart-1.0.13.jar文件(可点击下载)
②、下面就可以写实现各种图形的代码了
A、生成柱状图:
<span style="font-size:18px;">package com.whp.test;import java.awt.Font;import java.io.File;import java.io.IOException;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.CategoryAxis3D;import org.jfree.chart.axis.NumberAxis3D;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.data.category.DefaultCategoryDataset;public class jfreeChart {public static void main(String[] args) {// TODO Auto-generated method stubDefaultCategoryDataset dataset=new DefaultCategoryDataset();//添加数据dataset.addValue(98, "数学", "张三");dataset.addValue(87, "语文", "张三");dataset.addValue(68, "数学", "李四");dataset.addValue(89, "语文", "李四");dataset.addValue(56, "数学", "王五");dataset.addValue(96, "语文", "王五");JFreeChart chart=ChartFactory.createBarChart3D("成绩统计表","学生姓名",//X轴的标签 "分数",//Y轴的标签 dataset, //图标显示的数据集合 PlotOrientation.VERTICAL, //图像的显示形式(水平或者垂直) true,//是否显示子标题 true,//是否生成提示的标签 true); //是否生成URL链接 //处理图形上的乱码//处理主标题的乱码chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));//处理子标题乱码chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,15));//获取图表区域对象CategoryPlot categoryPlot = (CategoryPlot)chart.getPlot();//获取X轴的对象CategoryAxis3D categoryAxis3D = (CategoryAxis3D)categoryPlot.getDomainAxis();//获取Y轴的对象NumberAxis3D numberAxis3D = (NumberAxis3D)categoryPlot.getRangeAxis();//处理X轴上的乱码categoryAxis3D.setTickLabelFont(new Font("宋体",Font.BOLD,15));//处理X轴外的乱码categoryAxis3D.setLabelFont(new Font("宋体",Font.BOLD,15));//处理Y轴上的乱码numberAxis3D.setTickLabelFont(new Font("宋体",Font.BOLD,15));//处理Y轴外的乱码numberAxis3D.setLabelFont(new Font("宋体",Font.BOLD,15));//处理Y轴上显示的刻度,以10作为1格numberAxis3D.setAutoTickUnitSelection(false);NumberTickUnit unit = new NumberTickUnit(10);numberAxis3D.setTickUnit(unit);//获取绘图区域对象BarRenderer3D barRenderer3D = (BarRenderer3D)categoryPlot.getRenderer();//设置柱形图的宽度barRenderer3D.setMaximumBarWidth(0.07);//在图形上显示数字barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());barRenderer3D.setBaseItemLabelsVisible(true);barRenderer3D.setBaseItemLabelFont(new Font("宋体",Font.BOLD,15));//在D盘目录下生成图片File file = new File("chart.jpeg");try {ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);} catch (IOException e) {e.printStackTrace();}//使用ChartFrame对象显示图像ChartFrame frame = new ChartFrame("xyz",chart);frame.setVisible(true);frame.pack();}}</span>结果:
B、生成折线图
package com.whp.test;import java.awt.Font;import java.awt.Rectangle;import java.io.File;import java.io.IOException;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.CategoryAxis3D;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.NumberAxis3D;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.renderer.category.LineAndShapeRenderer;import org.jfree.data.category.DefaultCategoryDataset;public class jfreeChart1 {public static void main(String[] args) {// TODO Auto-generated method stubDefaultCategoryDataset dataset = new DefaultCategoryDataset();// 添加数据dataset.addValue(98, "数学", "张三");dataset.addValue(68, "数学", "李四");dataset.addValue(56, "数学", "王五");JFreeChart chart = ChartFactory.createLineChart("用户统计报表(所属单位)", // 主标题的名称"所属单位名称",// X轴的标签"数量",// Y轴的标签dataset, // 图标显示的数据集合PlotOrientation.VERTICAL, // 图像的显示形式(水平或者垂直)true,// 是否显示子标题true,// 是否生成提示的标签true); // 是否生成URL链接// 处理图形上的乱码// 处理主标题的乱码chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));// 处理子标题乱码chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));// 获取图表区域对象CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();// 获取X轴的对象CategoryAxis categoryAxis = (CategoryAxis) categoryPlot.getDomainAxis();// 获取Y轴的对象NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();// 处理X轴上的乱码categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));// 处理X轴外的乱码categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));// 处理Y轴上的乱码numberAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));// 处理Y轴外的乱码numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));// 处理Y轴上显示的刻度,以10作为1格numberAxis.setAutoTickUnitSelection(false);NumberTickUnit unit = new NumberTickUnit(10);numberAxis.setTickUnit(unit);// 获取绘图区域对象LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer) categoryPlot.getRenderer();// 在图形上显示数字lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());lineAndShapeRenderer.setBaseItemLabelsVisible(true);lineAndShapeRenderer.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));// 在图形上添加转折点(使用小矩形显示)Rectangle shape = new Rectangle(10, 10);lineAndShapeRenderer.setSeriesShape(0, shape);lineAndShapeRenderer.setSeriesShapesVisible(0, true);//在D盘目录下生成图片File file = new File("chart1.jpg");try {ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);} catch (IOException e) {e.printStackTrace();}// 使用ChartFrame对象显示图像ChartFrame frame = new ChartFrame("xyz", chart);frame.setVisible(true);frame.pack();}}
结果:
C、生成饼图:
package com.whp.test;import java.awt.Font;import java.awt.Rectangle;import java.io.File;import java.io.IOException;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.CategoryAxis3D;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.axis.NumberAxis3D;import org.jfree.chart.axis.NumberTickUnit;import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;import org.jfree.chart.labels.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.BarRenderer3D;import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DefaultPieDataset;public class jfreeChart3 {public static void main(String[] args) {// TODO Auto-generated method stubDefaultPieDataset dataset = new DefaultPieDataset();//添加数据dataset.setValue("张三",40);dataset.setValue("李四",32);dataset.setValue("王五",28);JFreeChart chart = ChartFactory.createPieChart3D("比重统计报表(所属单位)", //主标题的名称 dataset, //图标显示的数据集合 true,//是否显示子标题 true,//是否生成提示的标签 true); //是否生成URL链接//处理图形上的乱码//处理主标题的乱码chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));//处理子标题乱码chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,15));//获取图表区域对象PiePlot3D categoryPlot = (PiePlot3D)chart.getPlot();//处理图像上的乱码categoryPlot.setLabelFont(new Font("宋体",Font.BOLD,15));//设置图形的生成格式为(上海 2 (10%))String format = "{0} {1} ({2})";categoryPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(format));//在D盘目录下生成图片File file = new File("chart2.jpg");try {ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);} catch (IOException e) {e.printStackTrace();}//使用ChartFrame对象显示图像ChartFrame frame = new ChartFrame("xyz",chart);frame.setVisible(true);frame.pack();}}
结果:
1 0
- 使用jfreechart生成柱状图、折线图、和饼状图
- JFreeChart生成柱状图、饼状图、折线图详解
- JFreeChart生成柱状图、饼状图、折线图详解
- 使用jfreeChart生成柱状图,折线图,饼图等
- Jfreechart生成折线图和柱状图混合图
- 【JSP中使用Jfreechart绘制折线、饼图和柱状图】
- 【JSP中使用Jfreechart绘制折线、饼图和柱状图】
- 使用JFreeChart生成柱状图和饼图
- jfreechart柱状图+折线图
- 如何使用PHP动态生成饼状图、柱状图和折线图
- 如何使用PHP动态生成饼状图、柱状图和折线图
- jfreechart 生成折线图,饼图,柱状图,堆栈柱状图
- JFreeChart实现饼状图、柱状图和折线图以及各类报表
- jfreeChart 柱状图和折线图结合
- JFreeChart饼状图、3D柱状图、折线图
- jfreechart产生饼状图,折线图,柱状图
- POI导出excel+JFreeChart生成图表(柱状图和折线图)
- #.JFreeChart 图表生成实例(饼图、柱状图、折线图、时序图)
- OpenGL + Win32 SDK 开发框架的搭建(C语言版)
- ios之开发屏幕适配和系统版本适配
- Some CV Codes
- 反射
- OpenGL + Win32 SDK 开发框架的搭建(C++语言版)(先补上一个问题!!)
- 使用jfreechart生成柱状图、折线图、和饼状图
- php反序列化后的输出每个键值和value值
- 物流配货网(jsp+struts2+mysql)总结
- 第五章数组—5.2.4讲学习笔记
- Android开源项目--分类汇总
- struts2 ex成功
- mac svn 设置代理
- 三星开放了眼睛控制鼠标的源代码
- 用Collections.synchronizedCollection创建线程安全的集合、列表...