`

JFreeChart产生Web图表

阅读更多
这个是柱状图的
后台代码:
	@Action(value="init",results={ @Result(location = "/page/count/init.jsp") })
	public String init() throws Exception{	
		setImages();
		return ConstUtil.SUCCESS;
	}		
	
	public void setImages()throws Exception{
		DefaultCategoryDataset dataset = getDataSet();
		JFreeChart chart = ChartFactory.createBarChart3D(
							"水果产量图", //图表标题
							"水果", //目录轴的显示标签
							"产量", //数值轴的显示标签
							dataset, //数据集
							PlotOrientation.VERTICAL, //图表方向:水平、垂直
							true, //是否显示图例(对于简单的柱状图必须是false)
							false, //是否生成工具
							false //是否生成URL链接
							);		
		//解决乱码问题
		setImageFont(chart);
		
		HttpServletRequest req = (HttpServletRequest) (ActionContext
				.getContext().get(ServletActionContext.HTTP_REQUEST));
		String filename = ServletUtilities.saveChartAsPNG(chart, 400,
				300, null, req.getSession());
		ServletContext servlet = (ServletContext) (ActionContext.getContext()
				.get(ServletActionContext.SERVLET_CONTEXT)); 
		String imagePath_area = servlet.getContextPath() + "/servlet/DisplayChart?filename="
				+ filename;
		
		request.put("image", image);
	}
	
	/**
	 * 解决乱码问题
	 */
	private  void setImageFont(JFreeChart chart){
		CategoryPlot plot = (CategoryPlot) chart.getPlot();
		CategoryAxis domainAxis = plot.getDomainAxis();    
		ValueAxis numberaxis = plot.getRangeAxis();  
		
		//设置标题文字 
		chart.getTitle().setFont(new Font("宋体", Font.BOLD,12));  
		    
		//设置X轴坐标上的文字    
		domainAxis.setTickLabelFont(new Font("黑体", Font.PLAIN, 11));     
		    
		//设置X 轴的标题文字  
		domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));     
	   
		//设置Y 轴坐标上的文字   
		numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));     
	    
		//设置Y 轴的标题文字
		numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));     
		    
		//设置底部文字 
		chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));  
	}
	
	/**
	 * 获取一个组合数据集对象
	 * @return
	 */
	private  DefaultCategoryDataset getDataSet(){
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		
		dataset.addValue(100, "北京", "苹果");
		dataset.addValue(120, "上海", "苹果");
		dataset.addValue(380, "广州", "苹果");
		dataset.addValue(230, "北京", "梨子");
		dataset.addValue(200, "上海", "梨子");
		dataset.addValue(230, "广州", "梨子");
		dataset.addValue(400, "北京", "葡萄");
		dataset.addValue(300, "上海", "葡萄");
		dataset.addValue(500, "广州", "葡萄");
		return dataset;
	}




这是饼状图的
public void cateImage() throws IOException {
		DefaultPieDataset data = getDataSetcate();
		JFreeChart chart = ChartFactory.createPieChart3D("水果产量图", // 图表标题 
				data, true, // 是否显示图例 
				false, false);

		setImageFont1(chart);

		HttpServletRequest req = (HttpServletRequest) (ActionContext
				.getContext().get(ServletActionContext.HTTP_REQUEST));
		String filename = ServletUtilities.saveChartAsPNG(chart, 400, 300,
				null, req.getSession());
		ServletContext servlet = (ServletContext) (ActionContext.getContext()
				.get(ServletActionContext.SERVLET_CONTEXT));
		String cate = servlet.getContextPath()
				+ "/servlet/DisplayChart?filename=" + filename;

		request.put("image", image);
	}

	/** 
	 * 解决乱码问题 
	 */
	private void setImageFont1(JFreeChart chart) {
		PiePlot pieplot = (PiePlot) chart.getPlot();
		//设置标题的字体 
		chart.getTitle().setFont(new Font("宋体", Font.BOLD, 12));

		//设置中间的字体 
		pieplot.setLabelFont(new Font("宋体", Font.PLAIN, 10));

		//设置底部的字体 
		chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
	}

	/** 
	 * 获取一个简单数据集对象 
	 * @return 
	 */
	private static DefaultPieDataset getDataSetcate() {
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("苹果", 100);
		dataset.setValue("梨子", 200);
		dataset.setValue("葡萄", 300);
		dataset.setValue("香蕉", 400);
		dataset.setValue("荔枝", 500);
		return dataset;
	}


页面代码:
<div class="pic">
		<img src="${request.image}" >
</div>	
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics