@RequestMapping(value = "jfreeChartLineTset")
public String jfreeChartLineTset(HttpServletRequest request){
CategoryDataset createDataset = createDataset();
JFreeChart createLineChart = createLineChart("收文数据统计", "收文类型", "数量", createDataset);
createLineChart.setBackgroundImageAlpha(0.2F);
FileOutputStream fosChart = null;
try {
//文件夹不存在则创建
/*File file = new File("D:\\jfreechart");
if (!file.exists()) {
file.mkdirs();
}*/
String chartName = request.getSession().getServletContext().getRealPath("/static/")+"/jfreeChart/jfreechartLine.jpeg";
fosChart = new FileOutputStream(chartName);
ChartUtilities.writeChartAsPNG(fosChart, createLineChart, 1000, 320);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fosChart.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return "modules/personplan/jfreeChart";
}
public JFreeChart createLineChart(
String chartTitle, String x,
String y, CategoryDataset dataset) {
// 构建一个chart
JFreeChart chart = ChartFactory.createLineChart(
chartTitle,
x,
y,
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);
//字体清晰
chart.setAntiAlias(false);
// 设置背景颜色
chart.setBackgroundPaint(Color.WHITE);
// 设置图标题的字体
Font font = new Font("隶书", Font.BOLD, 25);
chart.getTitle().setFont(font);
// 设置面板字体
Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
// 设置图示的字体
chart.getLegend().setItemFont(labelFont);
CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
// x轴 // 分类轴网格是否可见
categoryplot.setDomainGridlinesVisible(false);
// y轴 //数据轴网格是否可见
categoryplot.setRangeGridlinesVisible(false);
categoryplot.setRangeGridlinePaint(Color.WHITE);// 虚线色彩
categoryplot.setDomainGridlinePaint(Color.WHITE);// 虚线色彩
categoryplot.setBackgroundPaint(Color.cyan);// 折线图的背景颜色
// 没有数据时显示的文字说明
categoryplot.setNoDataMessage("没有数据显示");
// 设置折线的透明度
/*categoryplot.setForegroundAlpha(0.2F);*/
/*categoryplot.setBackgroundImageAlpha(0.2F);*/
// 设置背景图透明度
// 设置轴和面板之间的距离
categoryplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
// 横轴 x
CategoryAxis domainAxis = categoryplot.getDomainAxis();
domainAxis.setLabelFont(labelFont);// 轴标题
domainAxis.setTickLabelFont(labelFont);// 轴数值
// domainAxis.setLabelPaint(Color.BLUE);//轴标题的颜色
// domainAxis.setTickLabelPaint(Color.BLUE);//轴数值的颜色
// 横轴 lable 的位置 横轴上的 Lable 45度倾斜 DOWN_45
/* domainAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);*/
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
// 设置距离图片左端距离
domainAxis.setLowerMargin(0.0);
// 设置距离图片右端距离
domainAxis.setUpperMargin(0.0);
// 纵轴 y
NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
numberaxis.setLabelFont(labelFont);
numberaxis.setTickLabelFont(labelFont);
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
numberaxis.setAutoRangeIncludesZero(true);
// 获得renderer 注意这里是下嗍造型到lineandshaperenderer!!
LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot
.getRenderer();
//是否显示折点
lineandshaperenderer.setBaseShapesVisible(true); // series 点(即数据点)可见
lineandshaperenderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见
// 显示折点数据
lineandshaperenderer
.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
lineandshaperenderer.setBaseItemLabelsVisible(true);
return chart;
}
/**
* 取出不同收文的数据
* 折现图数据集
*
* @return
*/
@RequestMapping(value = "createDataset")
public CategoryDataset createDataset() {
String str1 = "集团收文";
String str2 = "党委收文";
String str3 = "纪委收文";
String str4 = "工会收文";
String str5 = "团委收文";
String str6 = "管理所收文";
String str7 = "工会分会收文";
String str8 = "党支部收文";
String str9 = "集团扶贫办收文";
String str10 = "养护单位收文";
String str11 = "地方收文";
String str12 = "交通厅公安局收文";
String str13 = "法院文书收文";
String str14 = "通知收文";
String str15 = "数量";
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// 通过isFlag 查找指定类型收文
dataset.addValue(jjbgSwService.findSwByFlag("3").size(), str15, str1);
dataset.addValue(jjbgSwService.findSwByFlag("2").size(), str15, str2);
dataset.addValue(jjbgSwService.findSwByFlag("4").size(), str15, str3);
dataset.addValue(jjbgSwService.findSwByFlag("5").size(), str15, str4);
dataset.addValue(jjbgSwService.findSwByFlag("6").size(), str15, str5);
dataset.addValue(jjbgSwService.findSwByFlag("7").size(), str15, str6);
dataset.addValue(jjbgSwService.findSwByFlag("8").size(), str15, str7);
dataset.addValue(jjbgSwService.findSwByFlag("9").size(), str15, str8);
dataset.addValue(jjbgSwService.findSwByFlag("10").size(), str15, str9);
dataset.addValue(jjbgSwService.findSwByFlag("11").size(), str15, str10);
dataset.addValue(jjbgSwService.findSwByFlag("12").size(), str15, str11);
dataset.addValue(jjbgSwService.findSwByFlag("13").size(), str15, str12);
dataset.addValue(jjbgSwService.findSwByFlag("14").size(), str15, str13);
dataset.addValue(jjbgSwService.findSwByFlag("15").size(), str15, str14);
return dataset;
}