📄 createchart.java
字号:
package com.saas.biz.commen;
import com.base.config.ProjectConfig;
import java.util.*;
import com.saas.biz.commen.config;
import com.saas.sys.log.Logger;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jfree.chart.ChartColor;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class CreateChart
{
public static Logger log;
public CreateChart()
{
log = new Logger(this);
}
public static void main(String[] args)
{
//步骤1:创建PieDataset对象(准备数据)
//PieDataset dataset = createDataset();
//步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
//JFreeChart freeChart = createChart(dataset,"");
//步骤3:将JFreeChart对象输出到文件,Servlet输出流等
//saveAsFile(freeChart, "/usr/www/soft.xsaas.com/pie.png", 500, 400);
}
//保存为文件
public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height)
{
FileOutputStream out = null;
try
{
File outFile = new File(outputPath);
if (!outFile.getParentFile().exists())
{
outFile.getParentFile().mkdirs();
}
out = new FileOutputStream(outputPath);
//保存为PNG文件
ChartUtilities.writeChartAsPNG(out, chart, height, weight);
//保存为JPEG文件
//ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);
out.flush();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (out != null)
{
try
{
out.close();
}
catch (IOException e)
{
//do nothing
}
}
}
}
//从PieDataset生成JFreeChart对象
public static JFreeChart createChart(PieDataset pieDataset,String chartitle)
{
JFreeChart jfreechart = ChartFactory.createPieChart(chartitle,
pieDataset, // dataset
true, // legend
false, // tooltips
false); // URLs
//以下的设置可以由用户定制,也可以省略
PiePlot pieplot = (PiePlot) jfreechart.getPlot();
//背景色 透明度
pieplot.setBackgroundAlpha(0.5f);
//前景色 透明度
pieplot.setForegroundAlpha(0.5f);
//其它设置请参考 PiePlot类
return jfreechart;
}
/**
* 创建PieDataset对象(数据的准备)
*
*/
public static PieDataset createDataset(ArrayList datalist)
{
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
if (datalist == null) return null;
for (Iterator it = datalist.iterator(); it.hasNext();)
{
HashMap dataListMap = (HashMap) it.next();
String title = "";
String value = "";
Double Dvalue = 0.00;
if (dataListMap.get("title") != null) title = dataListMap.get("title").toString();
if (dataListMap.get("value") != null) value = dataListMap.get("value").toString();
Dvalue = Double.parseDouble(value);
defaultpiedataset.setValue(title, Dvalue);
}
return defaultpiedataset;
}
/**
* 创建PieDataset对象(数据的准备)
*
*/
public static DefaultCategoryDataset createCategoryDataset(ArrayList datalist)
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// 装载数据
dataset.setValue(6, "Profit", "Jane");
dataset.setValue(3, "Profit2", "Jane");
dataset.setValue(7, "Profit", "Tom");
dataset.setValue(6, "Profit2", "Tom");
dataset.setValue(8, "Profit", "Jill");
dataset.setValue(9, "Profit2", "Jill");
dataset.setValue(5, "Profit", "John");
dataset.setValue(8, "Profit2", "John");
dataset.setValue(12, "Profit", "Fred");
dataset.setValue(11, "Profit2", "Fred");
return dataset;
}
//从PieDataset生成JFreeChart对象
public static JFreeChart createCategory(DefaultCategoryDataset dataset,String chartitle)
{
// 产生柱状图
//JFreeChart chart = ChartFactory.createXYLineChart("标题","x轴标志","y轴标志","设置数据","设置图形显示方向",是否显示图形,是否进行提示,是否配置报表存放地址);
// 图形显示方向:
// (1)HORIZONTAL:横向显示图形
// (2)VERTICAL:纵向显示图形
// 2D柱状图
JFreeChart chart = ChartFactory.createBarChart3D(chartitle,"Salesman", "Profit", dataset,PlotOrientation.VERTICAL,true, true, false);
// 设置总的背景颜色
chart.setBackgroundPaint(ChartColor.yellow);
// 设置标题颜色
chart.getTitle().setPaint(ChartColor.blue);
// 获得图表对象
CategoryPlot p = chart.getCategoryPlot();
// 设置图的背景颜色
p.setBackgroundPaint(ChartColor.black);
// 设置表格线颜色
p.setRangeGridlinePaint(ChartColor.red);
return chart;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -