JfreeChart 简单介绍
Jfreechart主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图等图形。
ChartFactory是org.jfree.chart包中抽象类,它负责生成标准的图表,它的常用静态方法createPieChart(),createBarchart()和createLineChart()分别可以创建标准的饼状图、柱形图(条形图)和折线图。
创建一张表首先要创建对应的数据集dataset,数据集分为通用数据集(General Dataset主要用来创建饼状图),分类数据集(Category Dataset常用于柱状图和折线图),系列数据集(Series Dataset,常用于存储一系列数据和构建线图表)
jar包依赖:
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.0.18</version>
</dependency>
1、饼状图表
package com.yztc.pie;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import java.awt.*;
import java.io.File;
import java.io.IOException;
/*饼状图*/
public class Try_Pie1 {
public static void main(String[] args) throws IOException {
//创建一个饼图的数据集
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue( "IPhone 5s", new Double( 20 ) );//名称和所占值
dataset.setValue( "SamSung Grand", new Double( 20 ) );
dataset.setValue( "MotoG", new Double( 40 ) );
dataset.setValue( "Nokia Lumia", new Double( 10 ) );
//创建表
JFreeChart chart = ChartFactory.createPieChart(//如果是3D效果的话修改成createBarChart3D
"Mobile Sales", // chart title图表标题
dataset, // data数据集
true, // include legend是否显示图例
true,//是否生成工具
false );//是否生成URL连接 有交互行为时改为true
chart.setBackgroundPaint( Color.BLACK ); //设置背景色为黑色
chart.setBorderVisible( true );//设置边框是否可见
chart.setBorderPaint( Color.BLACK );//设置边框是什么颜色
/*
3D效果的话添加
final PiePlot3D plot = ( PiePlot3D ) chart.getPlot( );
plot.setStartAngle( 270 );//设置起始角度
plot.setForegroundAlpha( 0.60f );//设置透明度
plot.setInteriorGap( 0.02 );//饼图绘图边缘与绘图区本身的空间设置
*/
int width = 640; //图片的宽
int height = 480; //图片的高
File pieChart = new File( "c:/java01/PieChart.jpeg" );//图片保存的位置
ChartUtilities.saveChartAsJPEG( pieChart, chart, width, height );
}
}
2、条形图表
package com.yztc.bar;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import java.io.File;
import java.io.IOException;
public class Try_bar1 {
public static void main(String [] args) throws IOException {
//初始化变量
final String fiat = "FIAT";
final String audi = "AUDI";
final String ford = "FORD";
final String speed = "Speed";
final String millage = "Millage";
final String userrating = "User Rating";
final String safety = "safety";
//创建数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
dataset.addValue( 1.0 , fiat , speed );//Y轴的值,圆柱体名称,X轴值
dataset.addValue( 3.0 , fiat , userrating );
dataset.addValue( 5.0 , fiat , millage );
dataset.addValue( 5.0 , fiat , safety );
dataset.addValue( 5.0 , audi , speed );//Y轴的值,圆柱体名称,X轴值
dataset.addValue( 6.0 , audi , userrating );
dataset.addValue( 10.0 , audi , millage );
dataset.addValue( 4.0 , audi , safety );
dataset.addValue( 4.0 , ford , speed );//Y轴的值,圆柱体名称,X轴值
dataset.addValue( 2.0 , ford , userrating );
dataset.addValue( 3.0 , ford , millage );
dataset.addValue( 6.0 , ford , safety );
JFreeChart barChart = ChartFactory.createBarChart( //3D效果的话直接改为createBarChart3D
"CAR USAGE STATIStICS",//表的标题
"Category", //Y轴标题
"Score",//X轴标题
dataset,//数据集
PlotOrientation.VERTICAL,//图表方向:水平、垂直
true,
true,
false);
int width = 640;// 图片的宽
int height = 480; //图片的高
File BarChart = new File( "c:/java01/BarChart.jpeg" );
ChartUtilities.saveChartAsJPEG( BarChart , barChart , width , height );
}
}
3、折线图表
package com.yztc.Line;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import java.io.File;
public class Try_Line1 {
public static void main( String[ ] args ) throws Exception
{
//创建一个数据集
DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
line_chart_dataset.addValue( 15 , "schools" , "1970" );//Y轴的值,x轴小标题,X轴的值
line_chart_dataset.addValue( 30 , "schools" , "1980" );
line_chart_dataset.addValue( 60 , "schools" , "1990" );
line_chart_dataset.addValue( 120 , "schools" , "2000" );
line_chart_dataset.addValue( 240 , "schools" , "2010" );
line_chart_dataset.addValue( 300 , "schools" , "2014" );
JFreeChart lineChartObject = ChartFactory.createLineChart(//createLineChart3D设置修改为3D效果
"Schools Vs Years",//表的标题
"Year",//X轴的标题
"Schools Count",//Y轴的标题
line_chart_dataset,//数据集
PlotOrientation.VERTICAL,//显示方式
true,true,false);
/*lineChartObject.setBackgroundPaint( );
* 设置背景颜色
* */
int width = 640; //图片的宽
int height = 480;//图片的高
File lineChart = new File( "c:/java01/LineChart.jpeg" );
ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);//以图片(JPEG)的形式保存
}}
jfreechart核心类主要有:
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:用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示