JFreeChart的小例子

        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;
 }
}
 

猜你喜欢

转载自464034065.iteye.com/blog/2173623