`
younglibin
  • 浏览: 1214346 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JFreeChart 柱状图参数设置方法(入门级)

阅读更多

 

 效果图:


 

 

 

 

import java.awt.Color;
import java.awt.Font;
import java.text.DecimalFormat;

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.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.title.TextTitle;
import org.jfree.ui.TextAnchor;

 

 主代码:

 

/**
 * 格式化 JFreeChart 输出图片使用
 * 
 *   
 * Author : 李斌
 * Date   : Nov 26, 2009
 * Time   : 11:50:41 AM 
 * Version: 1.0
 */
public class FormatPic {
	/**
	 * 格式化纵向柱状图使用
	 * 
	 * @param chart
	 * @returnType: void
	 * @author: 
	 * @data: Nov 26, 2009
	 * @time: 11:51:26 AM
	 */
	public static void setView(JFreeChart chart){
//		初始化字体
		Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 14);
		Font noFont = new Font("SansSerif", Font.TRUETYPE_FONT, 48);
//      格式化 图片  
        CategoryPlot plot = chart.getCategoryPlot();
//        没有数据是显示的消息
        plot.setNoDataMessage("没有数据!");
////        没有数据时显示的消息字体
        plot.setNoDataMessageFont(noFont); 
////        没有数据时显示的消息颜色
        plot.setNoDataMessagePaint(Color.RED);  
//     // 数据轴精度 
        NumberAxis vn = (NumberAxis) plot.getRangeAxis(); 
//     // 数据轴数据标签的显示格式 
        CategoryAxis domainAxis = plot.getDomainAxis(); 
//        
//     // 设置刻度必须从0开始 
        vn.setAutoRangeIncludesZero(true);
////		设置纵坐标数据精度
////        DecimalFormat df = new DecimalFormat("#0.00"); 
////        vn.setNumberFormatOverride(df);
//        
//        
//     x轴设置 
        domainAxis.setLabelFont(labelFont);// 轴标题 
        domainAxis.setTickLabelFont(labelFont);// 轴数值
//     y轴设置 
        ValueAxis rangeAxis = plot.getRangeAxis(); 
        rangeAxis.setLabelFont(labelFont); 
        rangeAxis.setTickLabelFont(labelFont); 
//        三维设置
        BarRenderer3D renderer = new BarRenderer3D(); 
//        // 设置柱子宽度 
        renderer.setMaximumBarWidth(0.05); 
//        // 设置柱子高度 
//        renderer.setMinimumBarLength(0.2); 
//        // 设置柱子边框颜色 
        renderer.setBaseOutlinePaint(Color.BLACK); 
//        // 设置距离图片左端距离 
        domainAxis.setLowerMargin(0.01); 
//        // 设置距离图片右端距离 
//        domainAxis.setUpperMargin(0.2); 
//        
//      // 设置显示位置
////        plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
////        plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
//
//        plot.setDomainAxis(domainAxis); 
//        // 设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确) 
//        plot.setBackgroundPaint(new Color(255, 255, 204)); 
        
        
//        //设置柱子上数值的字体
//        renderer.setItemLabelFont(new Font("宋体",Font.PLAIN,14)); 
//        renderer.setItemLabelsVisible(true);      
//        //设置柱子上数据的颜色
//        renderer.setItemLabelPaint(Color.RED);
        
//        指定分类的数据标签的字体
        renderer.setSeriesItemLabelFont(3,labelFont);     
//        指定分类的数据标签的字体颜色
        renderer.setSeriesItemLabelPaint(3,Color.RED);  
  


        
//        
        
//设置柱子上比例数值的显示,如果按照默认方式显示,数值为方向正常显示
        
        //设置柱子上显示的数据旋转90度,最后一个参数为旋转的角度值/3.14
          ItemLabelPosition itemLabelPosition= new ItemLabelPosition(
          ItemLabelAnchor.INSIDE12,TextAnchor.CENTER_RIGHT,
          TextAnchor.CENTER_RIGHT,-1.57D);
        
        //下面的设置是为了解决,当柱子的比例过小,而导致表示该柱子比例的数值无法显示的问题
          
        //设置不能在柱子上正常显示的那些数值的显示方式,将这些数值显示在柱子外面
          ItemLabelPosition itemLabelPositionFallback=new ItemLabelPosition(
          ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_LEFT,
          TextAnchor.HALF_ASCENT_LEFT,-1.57D);
        
        //设置正常显示的柱子label的position
        renderer.setPositiveItemLabelPosition(itemLabelPosition);
        renderer.setNegativeItemLabelPosition(itemLabelPosition);
        
        //设置不能正常显示的柱子label的position
        renderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback);
        renderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback);
        // 显示每个柱的数值,并修改该数值的字体属性 
        renderer.setIncludeBaseInRange(true);
        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 
        renderer.setBaseItemLabelsVisible(true); 
        
        
      //以下设置,将按照指定格式,制定内容显示每个柱的数值。可以显示柱名称,所占百分比
//        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}",new DecimalFormat("0.0%")));    

        
        
//        	 // 横轴上的label旋转90 度
//        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);  

        
//     // 设置每个平行柱之间距离 
        renderer.setItemMargin(0.05); 
//
        

        
        plot.setRenderer(renderer);
	}

 

 

 

 

/**   
     * 配置字体   
     * @param chart JFreeChart 对象   
     */   
     public static void configFont(JFreeChart chart){   
         // 配置字体   
         Font xfont = new Font("宋体",Font.PLAIN,14) ;// X轴   
         Font yfont = new Font("宋体",Font.PLAIN,14) ;// Y轴   
         Font kfont = new Font("宋体",Font.PLAIN,14) ;// 底部   
         Font titleFont = new Font("隶书", Font.BOLD , 25) ; // 图片标题   
         CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象   
           
         // 图片标题   
         chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));   
           
         // 底部   
         chart.getLegend().setItemFont(kfont);   
           
         // X 轴   
         CategoryAxis domainAxis = plot.getDomainAxis();       
         domainAxis.setLabelFont(xfont);// 轴标题   
         domainAxis.setTickLabelFont(xfont);// 轴数值     
         domainAxis.setTickLabelPaint(Color.BLUE) ; // 字体颜色   
         domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 横轴上的label斜显示     
           
         // Y 轴   
         ValueAxis rangeAxis = plot.getRangeAxis();       
         rangeAxis.setLabelFont(yfont);     
         rangeAxis.setLabelPaint(Color.BLUE) ; // 字体颜色   
         rangeAxis.setTickLabelFont(yfont);     
           
     }   

 

 

  • 大小: 50.4 KB
  • 大小: 14.1 KB
  • 大小: 13.6 KB
分享到:
评论

相关推荐

    jfreechart 堆栈柱状图跟折线图结合拼接

    jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707

    java制作jfreechart柱状图 饼状图 折线图

    在JFreeChart中,你可以使用`CategoryDataset`来存储数据,然后创建`JFreeChart`实例,最后使用`ChartFactory.createBarChart()`方法生成柱状图。你可以自定义每个类别的标签,设置柱子的颜色,甚至添加工具提示和...

    自定义JFreeChart柱状图的详细说明

    在Java编程领域,JFreeChart是一个非常流行的图表库,它提供了丰富的图表类型,包括柱状图、饼图、线图等,便于开发者创建出专业且美观的数据可视化展示。本篇文章将详细探讨如何自定义JFreeChart的柱状图,使其适应...

    JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图

    JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...

    jfreechart 绘制横向立体柱状图

    利用jfreechart绘制的横向立体柱状图,横坐标是数值,纵坐标是数据分类,需要提前引入jfreechart包文件到工程里,才不会报错

    jfreechart实现柱状图排序

    - **创建图表**:调用 `ChartFactory.createBarChart()` 方法创建一个柱状图,并设置图表的各种属性,如标题、坐标轴标签等。 - **自定义渲染器**:可以使用 `BarRenderer` 来进一步定制柱状图的外观,例如颜色、...

    JfreeChart柱状图饼图

    总之,JFreeChart是Java开发中不可或缺的图表库,无论你是要创建简单的柱状图还是复杂的饼图,都能找到合适的方法。通过对源码的学习,我们不仅可以定制图表,还能深入理解图形绘制的底层逻辑,从而提升开发效率和...

    jfreechart 生成折线图,饼图,柱状图,堆栈柱状图

    JFreeChart是一个流行的Java库,用于生成各种类型的图表,包括折线图、饼图和柱状图,甚至堆栈柱状图。这个压缩包中的"CreateChartServiceImpl.java"文件很可能包含了一个实现这些功能的服务类。 首先,我们要理解...

    JFreeChart动态加载柱状图

    JFreeChart创建柱状图,之前网上很多都是创建柱状图的,静态的。数据更新之后柱状图随之改变,代码实现详见附件代码。所需要的jar包是jfreechart-1.0.13.jar,gnujaxp.jar,jcommon-1.0.16.jar

    java+jfreechart+struts 生成柱状图

    java+jfreechart+struts 生成柱状图 java jfreechart 柱状图 java jfreechart 柱状图 谁需要完整项目可以去http://download.csdn.net/source/2665347

    JFreeChart设置柱状图的宽度

    JFreeChart设置柱状图的宽度,当一个元素时不让显示那么宽。

    jfreechart柱状图

    **JFreeChart 柱状图** JFreeChart 是一个流行的开源 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图等,广泛应用于数据分析、报告生成以及可视化应用中。这个压缩包提供的源代码示例,展示...

    JFreeChart柱状图资料

    最后,通过`JFreeChart`类的`createBarChart()`方法生成柱状图。 4. **自定义样式** JFreeChart允许你对柱状图进行高度定制,包括改变颜色、添加渐变色、调整标签样式、修改轴的刻度线和标签、设置图例样式等。...

    JFreeChart让单组柱子显示不同的颜色的办法

    在Java编程领域,JFreeChart是一个非常流行的图表库,它提供了丰富的图表类型,如柱状图、饼图、线图等,用于数据可视化。当我们需要创建一个柱状图,并且希望在同一组数据中,每根柱子显示不同的颜色时,JFreeChart...

    利用JFreeChart 实现柱状图,饼图,时序图,折线图等

    然后,使用`JFreeChart.createBarChart()`方法生成柱状图。 2. **饼图(Pie Chart)** 饼图用于显示整体中各个部分的比例。JFreeChart提供了`PieDataset`接口,用来存储数据,然后通过`JFreeChart.createPieChart...

    JFreeChart 折线、柱状组合图

    public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...

    jfreechart 柱状图、曲线图、饼图经

    JFreeChart是一款强大的Java图形库,它为开发者提供了丰富的图表类型,包括柱状图、曲线图和饼图等,使得在Java应用中展示数据变得更加直观和美观。在本篇文章中,我们将深入探讨如何利用JFreeChart来创建这些图表,...

Global site tag (gtag.js) - Google Analytics