欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jfreechart生成柱状图与饼状图(入门)

程序员文章站 2022-05-30 12:01:32
...
jfreechart生成柱状图与饼状图(入门)贴两段代码。
/**
	 * 生成柱状图
	 */
	public String genChannelNumBarChart() {
		try {
			@SuppressWarnings("unchecked")
			List<Object[]> lst = channelService.getArticleNumByChannel();

			int lstSize = lst.size();

			double[][] data = new double[lstSize][1];
			String[] rowKeys = new String[lstSize];
			String[] columnKeys = new String[]{""};
			int i = 0;
			for (Object[] obj : lst) {
				log.debug(obj[0] + "," + obj[1]);
		
				data[i] = new double[] { Double.parseDouble(String
						.valueOf(obj[1])) };
				
				rowKeys[i] = String.valueOf(obj[0]);
				i++;
			}

			CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
					rowKeys, columnKeys, data);
			JFreeChart chart = ChartFactory.createBarChart3D("栏目文章统计图", "栏目",
					"文章数", dataset, PlotOrientation.VERTICAL, true, false,
					false);

			// 通用程序
			TextTitle textTitle = chart.getTitle();
			textTitle.setFont(new Font("黑体", Font.BOLD, 15));
			CategoryPlot plot = chart.getCategoryPlot();
			CategoryAxis domainAxis = plot.getDomainAxis();
			domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 15));
			domainAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 15));
			ValueAxis valueAxis = plot.getRangeAxis();
			valueAxis.setLabelFont(new Font("黑体", Font.BOLD, 15));
			chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));

			String filename = ServletUtilities.saveChartAsPNG(chart, 600, 400,
					null, this.getSession());
			String graphURL = this.getRequest().getContextPath()
					+ "/DisplayChart?filename=" + filename;

			log.debug("graphURL:" + graphURL);
			
			this.setAttribute("graphURL", graphURL);
			this.setAttribute("filename", filename);

			return "channelNumBarChart";
			
		} catch (Exception e) {
			e.printStackTrace();
		}

		return "channelNumBarChart";
	}
	
	/**
	 * 生成饼状图
	 * @return
	 */
	public String genChannelNumPieChart() {
		try{
			@SuppressWarnings("unchecked")
			List<Object[]> lst = channelService.getArticleNumByChannel();
			//设置数据集 
			DefaultPieDataset dataset = new DefaultPieDataset();
			
			int i = 0;
			for (Object[] obj : lst) {
				log.debug(obj[0] + "," + obj[1]);
				dataset.setValue(String.valueOf(obj[0]),
						Double.parseDouble(String.valueOf(obj[1])));
				i++;
			}
			//通过工厂类生成JFreeChart对象 
			JFreeChart chart = ChartFactory.createPieChart3D("栏目文章发布分布图",
					dataset, true, false, false);
			
			TextTitle textTitle = chart.getTitle();
			textTitle.setFont(new Font("黑体",Font.BOLD,15));
			
			PiePlot pieplot = (PiePlot) chart.getPlot();
			pieplot.setLabelFont(new Font("宋体", 0, 12));
			
			//没有数据的时候显示的内容 
			pieplot.setNoDataMessage("无数据显示");
			pieplot.setCircular(false);
			pieplot.setLabelGap(0.02D);
			
			chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,15));
			//pieplot.getLegendItems().
			//XYPlot  xyPlot=(XYPlot)chart.getPlot();
			//xyPlot.getRangeAxis().setLabelFont(new Font("黑体",Font.BOLD,15));
			
			String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300,
					null, this.getSession());
			String graphURL = this.getRequest().getContextPath()
					+ "/DisplayChart?filename=" + filename;
			
			this.setAttribute("graphURL", graphURL);
			this.setAttribute("filename", filename);
			
			return "channelNumPieChart";
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
		
		
		return "channelNumPieChart";
	}


jfreechart生成柱状图与饼状图(入门)

jfreechart生成柱状图与饼状图(入门)