分类:
2008-09-12 13:09:43
以前用JFreeChart的时候每次都需要修改一些显示样式和代码,前段时间项目组要用,于是就进行了一次封装,把几个常用的样式都调整好了,包括三种常用的图表类型都封装到一起了,项目组的其他人员只要处理好要显示的数据就行了。
web.xml设置:
柱状图封装和设置:
public static JFreeChart getLineChart(String title, String xSubject, String ySubject, CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createLineChart(title, xSubject, ySubject, dataset, PlotOrientation.VERTICAL, true, true, false);
LineRenderer3D renderer = new LineRenderer3D();
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis(); //domainAxis.setVerticalCategoryLabels(false);
plot.setDomainAxis(domainAxis);
ValueAxis rangeAxis = plot.getRangeAxis(); //设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15); //设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
plot.setRenderer(renderer); //设置透明度
plot.setForegroundAlpha(0.4f); //设置背景透明度
plot.setBackgroundAlpha(0.8f); //设置背景颜色
chart.setBackgroundPaint(new Color(240,247,246));
chart.setBackgroundImageAlpha(0.3f);
return chart;
}
调用代码:
public JFreeChart getSingleChart(String chartType) {
//构造数据
double[][] data = new double[1][7];
for(int i = 0; i < 7; i ++)
{ data[0][i] = Math.round(Math.random()*1000); }
//根据类型显示不同类型图表
String[] rowKeys = new String[]{"Rule001"};
String[] columnKeys = new String[]{"20日","21日","22日","23日","24日","25日","26日"};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
if(chartType.equals("pole"))
return com.util.MyChartFactory.getBarChart("校验规则统计", "日期", "案例(个)", dataset);
else if(chartType.equals("line"))
return com.util.MyChartFactory.getLineChart("校验规则统计", "日期", "案例(个)", dataset);
else //if(chartType.equals("area"))
return com.util.MyChartFactory.getAreaChart("校验规则统计", "日期", "案例(个)", dataset);
}
[1]