一、简介
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。
JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。
二、下载即jar包的导入
官方下载地址:
http://www.jfree.org/jfreechart/download.html
如果是开发Java应用程序只需导入:jfreechart-1.0.13.jar 和 jcommon-1.0.16.jar
如果是JavaWeb开发,并整合了struts2,则还需在struts/lib下导入struts2-jfreechart-plugin-2.3.4.jar
三、在struts2中使用JFreeChart的用例
1、绘制柱状图
BarGraphAction.java
package com.ahut.action;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import com.opensymphony.xwork2.ActionSupport;
public class BarGraphAction extends ActionSupport{
private JFreeChart chart;
public JFreeChart getChart() {
DefaultCategoryDataset dcd = new DefaultCategoryDataset();//创建数据源
dcd.setValue(1,"","科比");//设置数据源
dcd.setValue(2,"","麦蒂");
dcd.setValue(3,"","詹姆斯");
//使用工厂类创建柱状图
JFreeChart chart = ChartFactory.createBarChart3D(
"你最喜欢的NBA球星",//标题
"投票选项",//目录轴的显示标签
"投票数", //数值轴的显示标签
dcd,//数据集
PlotOrientation.VERTICAL ,//图标方向
false, //是否显示图例(简单的柱状图必须是false)
true,//是否生成工具
false);//是否生成URL连接
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
public String execute(){
return SUCCESS;
} }
|
在struts.xml中进行如下配置:
<package name="struts2" extends="jfreechart-default">
<action name="barGraph" class="com.ahut.action.BarGraphAction">
<result name="success" type="chart"><!--以图表的形式显示-->
<param name="width">400</param>
<param name="height">300</param>
</result>
</action>
</package>
|
完成以上两个部分后,在程序中,访问到barGraph,就会显示一个柱状图。
2、绘制饼图
BChartAction.java
package com.ahut.action;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import com.opensymphony.xwork2.ActionSupport;
public class BChartAction extends ActionSupport{
private JFreeChart chart;
public JFreeChart getChart() {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();//创建数据源
defaultpiedataset.setValue("管理人员",10.02D);//设置数据源
defaultpiedataset.setValue("市场人员",20.23D);
defaultpiedataset.setValue("开发人员",60.02D);
defaultpiedataset.setValue("OEM人员",10.02D);
defaultpiedataset.setValue("其他人员",5.11D);
chart = ChartFactory.createPieChart("CityInfoPort公司组织架构图",defaultpiedataset,true,true,false);
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
public String execute(){
return SUCCESS;
}
}
|
在struts.xml中进行如下配置:
<action name="bChart" class="com.ahut.action.BChartAction">
<result name="success" type="chart">
<param name="width">400</param>
<param name="height">300</param>
</result>
</action>
|
3、绘制折线图
ZChartAction.java
package com.ahut.action;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import com.opensymphony.xwork2.ActionSupport;
public class ZChartAction extends ActionSupport{
private JFreeChart chart;
public JFreeChart getChart() {
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);
chart = ChartFactory.createLineChart("折线图", // chart title
"时间", // domain axis label
"销售额(百万)", // range axis label
linedataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips
false // urls
);
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
public String execute(){
return SUCCESS;
}
}
|
在struts.xml中进行如下配置:
<action name="zChart" class="com.ahut.action.ZChartAction">
<result name="success" type="chart">
<param name="width">400</param>
<param name="height">300</param>
</result>
</action>
|