JFreeCHart是一个开源半免费的工具,可以用来生成饼状图,柱状图,线型图等图片。
优点是代码简单,可以生成jpg或png图片
缺点是不能与用户交互。
import java.util.Random;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import com.opensymphony.xwork2.ActionSupport;
public class JFreeAction extends ActionSupport {
private JFreeChart chart;
public JFreeChart getChart() {
return chart;
}
public void setChart(JFreeChart chart) {
this.chart = chart;
}
public String execute() throws Exception {
// 先建立数据集合对象
DefaultPieDataset dataset = new DefaultPieDataset();
// 这里随机生成
Random r = new Random();
// 加入数据,类似Map的形式来加入
dataset.setValue("Java方向", r.nextInt(100) + 50);
dataset.setValue("C/C++方向", r.nextInt(50) + 20);
dataset.setValue("php方向", r.nextInt(50) + 20);
dataset.setValue("C#方向", r.nextInt(20) + 10);
// 建立核心操作对象
chart = ChartFactory.createRingChart("发展方向统计图", dataset, true, false,
false);
chart.getPlot().setForegroundAlpha(0.5f);
return "suc";
}
}
import java.io.File;
import java.util.Random;
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;
public class BarTest {
public static void main(String[] args) throws Exception {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
Random r = new Random();
for (int i = 1; i <= 6; i++) {
dataset.addValue(r.nextInt(5000) + 3000, "工资收入", i + "月");
dataset.addValue(r.nextInt(7000) + 1000, "奖金收入", i + "月");
dataset.addValue(r.nextInt(5000), "摆摊收入", i + "月");
}
JFreeChart chart = ChartFactory.createAreaChart("某人半年收入统计", "月份", "金额",
dataset, PlotOrientation.VERTICAL, true, false, false);
chart.getPlot().setForegroundAlpha(0.5f);
ChartUtilities
.saveChartAsJPEG(new File("D:/bar.jpg"), chart, 1000, 600);
}
}
饼状图
import java.util.Random;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class PieTest {
public static void main(String[] args) throws Exception {
// 先建立数据集合对象
DefaultPieDataset dataset = new DefaultPieDataset();
// 这里随机生成
Random r = new Random();
// 加入数据,类似Map的形式来加入
dataset.setValue("Java方向", r.nextInt(100) + 50);
dataset.setValue("C/C++方向", r.nextInt(50) + 20);
dataset.setValue("php方向", r.nextInt(50) + 20);
dataset.setValue("C#方向", r.nextInt(20) + 10);
// 建立核心操作对象
JFreeChart chart = ChartFactory.createRingChart("发展方向统计图", dataset,
true, false, false);
chart.getPlot().setForegroundAlpha(0.5f);
// 导出
ChartUtilities.saveChartAsJPEG(new File("D:/pie.jpg"), chart, 600, 600);
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="root" namespace="/" extends="jfreechart-default">
<action name="jfree" class="com.action.JFreeAction">
<result name="suc" type="chart">
<param name="height">600</param>
<param name="width">600</param>
</result>
</action>
</package>
</struts>