⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 categoryitemchart.java

📁 开源jfreechart
💻 JAVA
字号:
package org.yangyang.test;


import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.RenderingHints;
import java.io.PrintWriter;

import javax.servlet.http.HttpSession;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class CategoryItemChart {
	public static String generateBarChart(
	         HttpSession session,
	         PrintWriter pw,
	         int w, int h) {
	 String filename = null;
	 try {
	 CategoryDataset dataset=LabelGenerator.createDataset();
	 JFreeChart chart=ChartFactory.createBarChart(
	 "世界傻瓜大奖赛",//图表标题
	 "比赛场次",//X轴标题
	 "傻瓜程度",//Y轴标题
	 dataset,//数据集合
	 PlotOrientation.VERTICAL,//图表显示方向(水平、垂直)
	 true,//是否使用图例
	 false,//是否使用工具提示
	 false//是否为图表增加URL
	 );
	 
	 /*------------配置图表属性--------------*/
	 // 1,设置整个图表背景颜色
	// chart.setBackgroundPaint(Color.yellow);
	 
	 
//	 /*------------设定Plot参数-------------*/
	 CategoryPlot plot=chart.getCategoryPlot();
	 
//	 // 2,设置详细图表的显示细节部分的背景颜色
//	 plot.setBackgroundPaint(Color.PINK);
//	 // 3,设置垂直网格线颜色
//	 plot.setDomainGridlinePaint(Color.black);
//	 //4,设置是否显示垂直网格线
//	 plot.setDomainGridlinesVisible(true);
//	 //5,设置水平网格线颜色
//	 plot.setRangeGridlinePaint(Color.yellow);
//	 //6,设置是否显示水平网格线
//	 plot.setRangeGridlinesVisible(true);
	 
	 /*---------将所有数据转换为整数形式---------*/
	 final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
	 
	 rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
	 
//	 /*---------设置是否在柱图的状态条上显示边框----*/
	 CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();
	 BarRenderer  render=(BarRenderer) plot.getRenderer();
	 render.setItemMargin(0.1);
	 
	 /*---------设置状态条颜色的深浅渐变-----------*/
	    GradientPaint gp0 = new GradientPaint(
	            0.0f, 0.0f, new Color(255,200,80),
	            0.0f, 0.0f, new Color(255,255,40)
	            );
	    GradientPaint gp1 = new GradientPaint(
	            0.0f, 0.0f, new Color(50,255,50),
	            0.0f, 0.0f, new Color(100,255,100)
	            );
	    GradientPaint gp2 = new GradientPaint(
	            0.0f, 0.0f, Color.red,
	            0.0f, 0.0f, new Color(255,100,100)
	            );
	    GradientPaint gp3 = new GradientPaint(
	                0.0f, 0.0f, new Color(108,108,255),
	                0.0f, 0.0f, new Color(150, 150, 200)
	                );
	             
	    renderer.setSeriesPaint(0, gp0);
	    renderer.setSeriesPaint(1, gp1);
	    renderer.setSeriesPaint(2, gp2);
	    renderer.setSeriesPaint(3, gp3);

	    /*
	     *
	     * 解决柱状体与图片边框的间距问题
	     *
	     *
	     * */                
	    /*------设置X轴标题的倾斜程度----*/
	    CategoryAxis domainAxis = plot.getDomainAxis();
	    domainAxis.setCategoryLabelPositions(
	    CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)
	    );
	    /*------设置柱状体与图片边框的左右间距--*/
	    domainAxis.setLowerMargin(0.01);
	    domainAxis.setUpperMargin(0.01);

	    /*------设置柱状体与图片边框的上下间距---*/
	    ValueAxis rAxis = plot.getRangeAxis();
	    rAxis.setUpperMargin(0.15);
	    rAxis.setLowerMargin(0.15);
	   
	    /*---------设置每一组柱状体之间的间隔---------*/
	    render.setItemMargin(0.0);
	    /*
	     *
	     * 解决柱状体与图片边框的间距问题
	     *
	     *
	     * */ 
	   
	   
	   
	   
	   
	    /*
	     *
	     *
	     * 解决JFREECHART的中文显示问题
	     *
	     *
	     * */
	   
	    /*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
	    chart.getRenderingHints().put(
	            RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
	            );
	    /*----------设置标题字体--------------------------*/
	    TextTitle textTitle = chart.getTitle();
	    textTitle.setFont(new Font("黑体", Font.PLAIN, 20));       
	    /*------设置X轴坐标上的文字-----------*/
	    domainAxis.setTickLabelFont(new Font("sans-serif",Font.PLAIN,11));
	    /*------设置X轴的标题文字------------*/
	    domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,12));        
	    /*------设置Y轴坐标上的文字-----------*/
	    rAxis.setTickLabelFont(new Font("sans-serif",Font.PLAIN,12));
	    /*------设置Y轴的标题文字------------*/
	    rAxis.setLabelFont(new Font("黑体",Font.PLAIN,12));
	   
	    
	    /*---------设置柱状体上的显示的字体??????/---------*/        
	    renderer.setItemLabelGenerator(new LabelGenerator(0.0));
	    renderer.setItemLabelFont(new Font("宋体",Font.PLAIN,12));
	    renderer.setItemLabelsVisible(true);
	   
	    /*
	     *
	     *
	     * 解决JFREECHART的中文显示问题
	     *
	     *
	     * */    

	 /*------得到chart的保存路径----*/
	    ChartRenderingInfo info = new ChartRenderingInfo(new
	            StandardEntityCollection());
	 filename = ServletUtilities.saveChartAsPNG(chart, w, h, info, session);
	 
	 /*------使用printWriter将文件写出----*/
	 ChartUtilities.writeImageMap(pw, filename, info,true);
	 pw.flush();
	 
	 }
	 catch (Exception e) {
	 System.out.println("Exception - " + e.toString());
	 e.printStackTrace(System.out);
	 filename = "public_error_500x300.png";
	 }
	 return filename;
	 }
	 
	 

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -