<%@page import="java.awt.geom.Rectangle2D"%> <%@page import="org.jfree.chart.renderer.category.LineAndShapeRenderer"%> <%@page import="org.jfree.chart.labels.ItemLabelPosition"%> <%@page import="org.jfree.ui.TextAnchor"%> <%@page import="org.jfree.chart.labels.ItemLabelAnchor"%> <%@page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator"%> <%@page import="org.jfree.chart.renderer.category.BarRenderer3D"%> <%@page import="java.awt.Color"%> <%@page import="org.jfree.chart.axis.ValueAxis"%> <%@page import="org.jfree.chart.title.TextTitle"%> <%@page import="org.jfree.data.general.DatasetUtilities"%> <%@page import="org.jfree.data.category.CategoryDataset"%> <%@page import="org.jfree.chart.axis.CategoryAxis"%> <%@page import="java.awt.Font"%> <%@page import="org.jfree.chart.servlet.ServletUtilities"%> <%@page import="org.jfree.data.category.DefaultCategoryDataset"%> <%@page import="org.jfree.chart.plot.PlotOrientation"%> <%@page import="org.jfree.chart.axis.NumberAxis"%> <%@page import="org.jfree.chart.plot.CategoryPlot"%> <%@page import="org.jfree.chart.ChartFactory"%> <%@page import="org.jfree.chart.JFreeChart"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String series1 = "申报数目"; String series2 = "通过数目"; // 横轴名称(列名称) String type1 = "2011年"; String type2 = "2012年"; String type3 = "2013年"; String type4 = "2014年"; // 建立dataset DefaultCategoryDataset dataset = new DefaultCategoryDataset(); // 以下可以动态添加数据 dataset.addValue(500, series1, type1); dataset.addValue(1200, series1, type2); dataset.addValue(600, series1, type3); dataset.addValue(400, series1, type4); dataset.addValue(3000, series2, type1); dataset.addValue(5000, series2, type2); dataset.addValue(7800, series2, type3); dataset.addValue(9000, series2, type4); DefaultCategoryDataset zdataset=new DefaultCategoryDataset(); zdataset.addValue(12000,"申报数目", "2011年"); zdataset.addValue(3000,"通过数目", "2011年"); zdataset.addValue(14000, "申报数目", "2012年"); zdataset.addValue(5000, "通过数目", "2012年"); zdataset.addValue(16000,"申报数目", "2013年"); zdataset.addValue(7800,"通过数目","2013年"); zdataset.addValue(17000, "申报数目", "2014年"); zdataset.addValue(9000, "通过数目", "2014年"); // 建立chart JFreeChart chart = ChartFactory.createLineChart( "申报通过图表", // chart title "时间", // domain axis label "通过数目", // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips false // urls ); JFreeChart barchart=ChartFactory.createBarChart3D( "申报通过图表", "时间",//目录轴的显示标签 "通过数目",//数值轴的显示标签 zdataset, PlotOrientation.VERTICAL,//设置图表方向 true,//复杂柱状图 false, false ); // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART... CategoryPlot plot = chart.getCategoryPlot(); //关键位置 // customise the range axis... Font font = new Font("宋体",10,20); TextTitle tt = chart.getTitle(); //设置标题 tt.setFont(font); //纵轴字体 plot.getRangeAxis().setLabelFont(new Font("宋体", Font.BOLD, 15)); //横轴框里的标题字体 chart.getLegend().setItemFont(new Font("宋体", Font.ITALIC, 15)); //横轴列表字体 plot.getDomainAxis().setTickLabelFont(new Font("新宋体", 1, 15)); //横轴小标题字体 plot.getDomainAxis().setLabelFont(new Font("新宋体", 1, 12)); //设置背景色 //chart.setBackgroundPaint(Color.WHITE); NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); rangeAxis.setAutoRangeIncludesZero(true); rangeAxis.setUpperMargin(0.20); rangeAxis.setLabelAngle(Math.PI / 2.0); LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); //注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题 renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); renderer.setItemLabelAnchorOffset(10D); // renderer.setBaseShape(new Rectangle2D.Double(-1.5, -1.5, 3, 3), true); //设置点 renderer.setShape(new Rectangle2D.Double(-1.5, -1.5, 3, 3)); renderer.setShapesVisible(true); renderer.setSeriesPaint(3,Color.red); renderer.setSeriesLinesVisible(3,false); renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示折点数据 renderer.setItemLabelsVisible(true); CategoryPlot barplot = barchart.getCategoryPlot(); //关键位置 BarRenderer3D zrenderer =(BarRenderer3D)barplot.getRenderer(); //注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题 zrenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); zrenderer.setItemLabelAnchorOffset(10D); zrenderer.setItemMargin(0); zrenderer.setMaximumBarWidth(0.05); //设置柱子宽度 //barplot.getRenderer() plot.setDataset(1,zdataset); plot.setRenderer(1, barplot.getRenderer()); String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session); String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %> <img src="<%= graphURL %>" width=530 height=320 border=0> |
|
来自: oospace > 《jFreeChart(图表插件)》