package Actio;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.time.Year;
import org.jfree.ui.RectangleInsets;
public class JfreechatTuXing {
/*
* dataset 数据集 title 图形的标题 x 横柱的标题 y纵柱的标题 request 设置生成图片的路径
* return 图片的路径
*
* */
public String JfreechatZhuZhuang(DefaultCategoryDataset dataset,String title,String x,String y,HttpServletRequest request)
{
String imgname1="";
try {
// 用传过来的参数生产那个图形
JFreeChart jfc1=ChartFactory.createBarChart3D(title,x,y,dataset,PlotOrientation.VERTICAL,true,true,true);
CategoryPlot plot = jfc1.getCategoryPlot();
BarRenderer3D renderer1 = new BarRenderer3D();
renderer1.setItemLabelsVisible(true);
renderer1.setItemMargin(0.1);
plot.setRenderer(renderer1);
//图片的路径
imgname1=request.getRealPath("/image")+"chart1.jpg";
// 设置图片的大小
ChartUtilities.saveChartAsJPEG(new File(imgname1), jfc1, 500, 240);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return imgname1;
}
/*
* 饼状图 piedataset 数据集 title 图形的标题
* return 图片的生成路径
* */
public String JfreechatBingZhuang(DefaultPieDataset piedataset,String title,HttpServletRequest request)
{
String imgname2="";
try {
JFreeChart jfc3=ChartFactory.createPieChart3D(title, piedataset, true, true, true);
imgname2=request.getRealPath("/image")+"chart2.jpg";
// 用chartUtilities生成图形
ChartUtilities.saveChartAsJPEG(new File(imgname2), jfc3, 500, 240);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return imgname2;
}
public String JfreechatXianXing(DefaultCategoryDataset dataset,String title,String x,String y,HttpServletRequest request)
{
String imgname3="";
try {
JFreeChart jfc2=ChartFactory.createLineChart(title, x, y, dataset, PlotOrientation.VERTICAL, true, true, true);
imgname3=request.getRealPath("/image")+"chart3.jpg";
ChartUtilities.saveChartAsJPEG(new File(imgname3), jfc2, 500, 240);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return imgname3;
}
/*
* 线形图
*
*/
public String getQuXianTu(List<Integer> list,HttpServletRequest request,String title,String x,String y){
TimeSeries timeSeries = new TimeSeries("", Year.class);
TimeSeriesCollection lineDataset = new TimeSeriesCollection();
int j = 2001;
for (int i = 0; i < list.size(); i++) {
System.out.println(new Year(j));
timeSeries.add(new Year(j),list.get(i));
j = j+1;
}
lineDataset.addSeries(timeSeries);
JFreeChart chart = ChartFactory.createTimeSeriesChart(title, x, y, lineDataset, true, false, true);
XYPlot plot = (XYPlot) chart.getPlot();
// XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("yyy"));
plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D));
// xylineandshaperenderer.setBaseShape(plot, true);
XYItemRenderer xyitem = plot.getRenderer();
xyitem.setBaseItemLabelsVisible(true);
xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 12));
plot.setRenderer(xyitem);
String filename = request.getRealPath("/image")+"chart4.jpg";
try {
ChartUtilities.saveChartAsPNG(new File(filename), chart, 500, 240);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(filename);
return filename;
}
}