欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JFreeChart的小例子 博客分类: java学习 JFreeChart例子基本 

程序员文章站 2024-03-20 08:14:52
...

        JFreeChart是JAVA平台上的一个开放的图表绘制库,它完全使用JAVA语言编写,是为servlet以及jsp等使用所设计.JFreeChart可生成饼状图(pie charts),柱状图(bar charts)等等,并且可以产生PNG和JPEG格式的输出.

下面是一些常见的例子,希望给您带来帮助,记得要导入jar包哦!
饼状图:
package com.java.chart; 
import java.awt.Font;
import java.io.FileOutputStream; 
import java.io.IOException; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
 
 public class PieChart { public static void main(String[] args) { 
 // 创建数据集对象 DefaultPieDataset dataset = getDataset(); 
 // 创建JFreeChart对象 JFreeChart chart = ChartFactory.createPieChart3D("文具销量表", dataset, true, true, false); 
 // 处理中文乱码 // 获取CategoryPlot 
 PiePlot3D plot = (PiePlot3D) chart.getPlot(); 
 // 处理标题乱码
 chart.getTitle().setFont(new Font("宋体", Font.PLAIN, 18)); 
 // 处理表内容乱码
 chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 18));
 // 处理数据集乱码 plot.setLabelFont(new Font("宋体", Font.PLAIN, 18)); 
 // 输出 FileOutputStream fos = null; try { fos = new FileOutputStream("d:/a.jpg");      ChartUtilities.writeChartAsJPEG(fos, chart, 600, 400);
 } catch (Exception e) { 
System.out.println("生成图片失败!");
 }finally {
 try { fos.close();
 } catch (IOException e) 
{ e.printStackTrace();
 }
 }
 System.out.println("生成图片成功!");
 }
 public static DefaultPieDataset getDataset() {
 DefaultPieDataset dataset = new DefaultPieDataset(); 
  dataset.setValue("铅笔", 20);
  dataset.setValue("毛笔", 3);
  dataset.setValue("钢笔", 10);
 dataset.setValue("圆珠笔", 30); return dataset;
 }
 }
 柱状图:
package com.java.chart; import java.awt.Color; import java.awt.Font; import java.io.FileOutputStream; import java.io.IOException; 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.ValueAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset;
public class BarChart {
public static void main(String[] args) {
// 获取一个数据集 CategoryDataset dataSet = getDataSet(); 
// 创建JFreeChart的对象
JFreeChart freeChart = ChartFactory.createBarChart3D("水果统计图", "品种", "产量",dataSet, PlotOrientation.VERTICAL, true, true, false); // 设置图表的背景色 freeChart.setBackgroundPaint(new Color(0xffffff)); 
// 处理中文乱码 
//创建CategoryPlot对象
CategoryPlot plot = (CategoryPlot) freeChart.getPlot(); 
// 获取X轴 
CategoryAxis axis =plot.getDomainAxis(); 
// 处理x轴的标题乱码 
axis.setLabelFont(new Font("宋体",Font.PLAIN, 18));
// 处理X轴上的乱码 axis.setTickLabelFont(new Font("宋体",Font.PLAIN, 18));
// 获取Y轴 ValueAxis value = plot.getRangeAxis(); 
//处理Y轴的标题乱码 
value.setLabelFont(new Font("宋体", Font.PLAIN, 18)); 
//处理标题乱码 
freeChart.getTitle().setFont(new Font("宋体", Font.PLAIN,18));
// 处理图例乱码 freeChart.getLegend().setItemFont(new Font("宋体",Font.PLAIN, 15));
// 打印图表 FileOutputStream fos = null; try { fos =new FileOutputStream("d:/test3.jpg"); ChartUtilities.writeChartAsJPEG(fos, freeChart, 600, 400); 
} catch(Exception e)
{
System.out.println("生成图片失败!"); 
} finally {
// 释放资源 try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
} }
System.out.println("生成图片成功!"); 
}
public static CategoryDatasetgetDataSet() {
// 创建DefaultCategoryDataset 对象 DefaultCategoryDataset ds = new DefaultCategoryDataset(); 
//添加数据进数据集 
// 参数解释:第一个参数是数量,第二个参数是类别,第三个参数是横坐标
ds.addValue(100, "水果","苹果"); 
ds.addValue(200, "水果", "香蕉"); 
ds.addValue(300, "水果", "橘子");
ds.addValue(400, "水果", "龙眼"); 
ds.addValue(500, "水果", "栗子");
return ds;
}
}
  折线图:
packagecom.java.chart;
import java.awt.Font;
importjava.io.FileOutputStream;
import java.io.IOException;
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.ValueAxis; 
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart { public static void main(String[] args) { CategoryDataset dataset = createDataset(); 
JFreeChart chart =ChartFactory.createLineChart("一季度销售曲线", // 折线图名称 
"时间", // 横坐标名称 "销售额(百万)", // 纵坐标名称 
dataset, // 数据
PlotOrientation.VERTICAL, //水平显示图像 
true, // 是否需要图例 
true, // 是否需要工具 
false // 是否需要链接 
);
// 处理乱码
// 处理标题 
chart.getTitle().setFont(new Font("宋体", Font.PLAIN, 18)); // 获取CategoryPlot
CategoryPlot plot = chart.getCategoryPlot(); 
//获取X轴 
CategoryAxis axis = plot.getDomainAxis();
// 处理X轴乱码
axis.setTickLabelFont(new Font("宋体", Font.PLAIN, 18));
// 处理x轴标题乱码 axis.setLabelFont(new Font("宋体", Font.PLAIN, 18)); 
// 获取Y轴 ValueAxis value = plot.getRangeAxis();
// 处理Y轴乱码 value.setLabelFont(new Font("宋体", Font.PLAIN, 18)); 
// 处理其他乱码 chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 18)); plot.setRangeGridlinesVisible(true); // 是否显示格子线 plot.setBackgroundAlpha(0.3f); // 设置背景透明度 
FileOutputStream fos =null;
try {
fos = new FileOutputStream("d:/line.jpg"); ChartUtilities.writeChartAsJPEG(fos, chart, 600, 400); 
} catch(Exception e) { 
e.printStackTrace(); 
} finally {
try {
fos.close(); } catch (IOException e) {
e.printStackTrace();
}
}
}
public static DefaultCategoryDataset createDataset() { 
DefaultCategoryDataset linedataset = new DefaultCategoryDataset();
// 各曲线名称 
String series1= "宝马"; 
String series2 = "奔驰"; 
String series3 ="保时捷";
     // 横轴名称(列名称) 
String type1 = "1月"; 
String type2 = "2月"; 
String type3 = "3月";
linedataset.addValue(0.0, series1, type1);
linedataset.addValue(4.2, series1, type2);
linedataset.addValue(3.9, series1, type3); 
linedataset.addValue(1.0, series2, type1);
linedataset.addValue(5.2, series2, type2); 
linedataset.addValue(7.9, series2, type3); linedataset.addValue(2.0, series3, type1); 
linedataset.addValue(9.2, series3, type2); 
linedataset.addValue(8.9, series3, type3); return linedataset;
 }
}