您的位置:首页 > Web前端 > JavaScript

jfreechart生成柱状图写到jsp页面并打印

2012-10-30 14:30 344 查看
http://shop59544428.taobao.com/

<servlet>

<servlet-name>DisplayChart</servlet-name>

<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>DisplayChart</servlet-name>

<url-pattern>/DisplayChart</url-pattern>

</servlet-mapping>

<listener>

<listener-class>org.jfree.chart.servlet.ChartDeleter</listener-class>

</listener>

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<style type='text/css'>

@media screen{.printhide{display:block}}

@media print{.printhide{display:none}}

</style>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<img src="testJfreechar">

<div class="printhide">

<a href="#" onclick="javascript:window.print();">打印本页</a>

</div>

</body>

</html>

/**

* 图表数据集

* @return

*/

@RequestMapping("/testJfreechar")

public void createDataset(HttpServletRequest request,ServletResponse res){

// DefaultCategoryDataset dataset = new DefaultCategoryDataset();

// dataset.addValue(500, "java图书", "java开发");

// dataset.addValue(100, "java图书", ".Net开发");

// dataset.addValue(900, "java图书", "linux系统");

double[][] data = new double[][] {{672, 766, 223, 540, 126}, {325, 521, 210, 340, 106}, {332, 256, 523, 240, 526}};

String[] rowKeys = {"苹果","梨子","葡萄"};

String[] columnKeys = {"北京","上海","广州","成都","深圳"};

CategoryDataset dataset =DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);

StandardChartTheme standardChartTheme=new StandardChartTheme("CN");

//设置标题字体

standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD,20));

//设置图例的字体

standardChartTheme.setRegularFont(new Font("黑体",Font.PLAIN,15));

//设置轴向的字体

standardChartTheme.setLargeFont(new Font("黑体",Font.PLAIN,15));

//应用主题样式

ChartFactory.setChartTheme(standardChartTheme);

JFreeChart chart = ChartFactory.createBarChart3D("java图书销售统计",//图表标题

"java图书",//横轴标题

"销量(本)",//纵轴标题

dataset,//数据集

PlotOrientation.VERTICAL,//图表方向

true,//是否显示图例标识

true,//是否显示图例

true//是否支持超链接

);

CategoryPlot plot = chart.getCategoryPlot();

CategoryAxis domainAxis = plot.getDomainAxis();

//设置 columnKey 是否垂直显示

//domainAxis.setVerticalCategoryLabels(true);

//设置距离图片左端距离

domainAxis.setLowerMargin(0.1);

//设置距离图片右端距离

domainAxis.setUpperMargin(0.1);

//设置 columnKey 是否间隔显示

//domainAxis.setSkipCategoryLabelsToFit(true);

plot.setDomainAxis(domainAxis);

ValueAxis rangeAxis = plot.getRangeAxis();

//设置最高的一个柱与图片顶端的距离

rangeAxis.setUpperMargin(0.15);

//设置最低的一个柱与图片底端的距离

//rangeAxis.setLowerMargin(0.15);

plot.setRangeAxis(rangeAxis);

BarRenderer3D renderer = new BarRenderer3D();

renderer.setBaseOutlinePaint(Color.BLACK);

//设置 Wall 的颜色

renderer.setWallPaint(Color.gray);

//设置每种水果代表的柱的颜色

renderer.setSeriesPaint(0, new Color(0, 0, 255));

renderer.setSeriesPaint(1, new Color(0, 100, 255));

renderer.setSeriesPaint(2, Color.GREEN);

//设置每种水果代表的柱的 Outline 颜色

renderer.setSeriesOutlinePaint(0, Color.GREEN);

renderer.setSeriesOutlinePaint(1, Color.BLACK);

renderer.setSeriesOutlinePaint(2, Color.GREEN);

//设置每个地区所包含的平行柱的之间距离

renderer.setItemMargin(0.3);

//显示每个柱的数值,并修改该数值的字体属性

renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());

renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12));

renderer.setItemLabelsVisible(true);

renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(

ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));

renderer.setItemLabelAnchorOffset(10D);

plot.setRenderer(renderer);

//设置柱的透明度

plot.setForegroundAlpha(0.6f);

//设置地区、销量的显示位置

plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);

plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);

try {

ChartUtilities.writeChartAsJPEG(res.getOutputStream(), chart, 500, 400);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: