`

JfreeChar 柱形图

 
阅读更多

 

 

package com.gamemag.web.statistics;

 

 

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

 

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.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.servlet.ServletUtilities;

import org.jfree.chart.title.TextTitle;

import org.jfree.data.category.CategoryDataset;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.ui.RectangleEdge;

 

import com.gamemag.entity.player.Tasks;

 

publicclass TaskBarChart {

 

    privatestatic CategoryDataset createDataset(List taskNum,

           List<Tasks> tasksList) {

       String s = "合计";

       DefaultCategoryDataset defaultcategorydateaset = new DefaultCategoryDataset();

       for (int i = 0; i < tasksList.size(); i++) {

           String t_name = tasksList.get(i).getT_name();

           String num = taskNum.get(i).toString();

           defaultcategorydateaset.addValue(Integer.parseInt(num), s, t_name);

       }

       return defaultcategorydateaset;

    }

 

    // 创建JFreeChar对象

    privatestatic JFreeChart createChart(CategoryDataset categoydataset) {

      

       JFreeChart jfreechart = ChartFactory.createBarChart("合计", // 图表标题

              null,// x轴的显示标签

              null, // y轴的显示标签

              categoydataset,// 数据集

              PlotOrientation.VERTICAL,// 图表方向:水平垂直

              true, // 是否生成图例

              true,// 是否生成工具

              false// 是否生成URL链接

              );

       // 解决标题乱码

       CategoryPlot categoryplot = jfreechart.getCategoryPlot();

       CategoryAxis domainAxis = categoryplot.getDomainAxis();// x

       ValueAxis numberaxis = categoryplot.getRangeAxis(); // y

 

       TextTitle t = jfreechart.getTitle();

       t.setFont(new Font("宋体", Font.BOLD, 16));// 标题文字

 

       domainAxis.setLabelFont(new Font("宋体", Font.BOLD, 20));// x轴标题文字

       domainAxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));// x轴坐标上文字

       domainAxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细

       numberaxis.setLabelFont(new Font("宋体", Font.BOLD, 20));// y轴标题文字

       numberaxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));// y轴坐标上文字

       numberaxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细

       numberaxis.setUpperMargin(0.1);//设置最高的一个柱与图片顶端的距离(最高柱的10%)

 

       jfreechart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 10));// 图例文字

       jfreechart.getLegend().setPosition(RectangleEdge.RIGHT); // 图例居右

       //jfreechart.getLegend().setBackgroundPaint(Color.gray);// 图例背景色

       jfreechart.setBorderStroke(new BasicStroke(1));// 设置边框宽度

       jfreechart.setBackgroundPaint(Color.white); // 设置背景颜色

       BarRenderer renderer = new BarRenderer();

       //renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());

       //renderer.setBaseItemLabelsVisible(true);//显示每个柱的数值

       renderer.setShadowVisible(false);//显示阴影

       renderer.setMaximumBarWidth(0.03);// 设置柱子宽度

       renderer.setSeriesPaint(0, Color.blue);// 设置柱子颜色

       categoryplot.setRenderer(renderer);

       categoryplot.setBackgroundPaint(Color.white);

       categoryplot.setDomainGridlinePaint(Color.white);

       categoryplot.setDomainGridlinesVisible(true);

       categoryplot.setRangeGridlinePaint(Color.black);

       categoryplot.setNoDataMessage("No data available");

       // categoryplot.setDomainGridlinePaint(Color.black); //设置纵坐标网格线(平分柱子)

       // categoryplot.setRangeGridlinePaint(Color.blue);//设置纵坐标网格线

       CategoryAxis categoryaxis = categoryplot.getDomainAxis(); // 横轴上的 Lable

       categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);// 45度倾斜

 

       return jfreechart;

    }

 

    publicstatic String generateBarChart(HttpSession session, PrintWriter out,

           List taskNum, List<Tasks> tasksList) throws IOException {

       String filename = null;

       CategoryDataset categoryDateset = createDataset(taskNum, tasksList);

       JFreeChart chart = createChart(categoryDateset);

       /**

        * File directory = new File(".");

        * System.out.println(directory.getCanonicalPath()+"=========="+img_path);

        *

        * FileOutputStream fos_jpg = null; try {

        *  fos_jpg = new  FileOutputStream("fruit.jpg");

        *      ChartUtilities.writeChartAsJPEG(fos_jpg, 1.0f, chart, 400,300,null);

        * } finally {

        *      try {

        *         fos_jpg.close();

        * } catch (Exception e) {} }

        **/

       ChartRenderingInfo info = new ChartRenderingInfo(

              new StandardEntityCollection());

       try {

           filename = ServletUtilities.saveChartAsPNG(chart, 600, 320, info,

                  session);

           ChartUtilities.writeImageMap(out, filename, info, false);

       } catch (IOException e) {

           e.printStackTrace();

       }

       out.flush();

       return filename;

    }

 

}

 

 

 

 

 

<!-- jfreechar 配置web.xml -->

    <servlet>

       <servlet-name>DisplayChart</servlet-name>

       <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

    </servlet>

    <servlet-mapping>

       <servlet-name>DisplayChart</servlet-name>

       <url-pattern>/DisplayChart</url-pattern>

    </servlet-mapping>

 

 

 

 

 

 

 

// 调用方法

 

TaskBarChart bar = new TaskBarChart();

HttpSession  session = ServletActionContext.getRequest().getSession();

HttpServletResponse response =  ServletActionContext.getResponse();

PrintWriter out = response.getWriter();

filename = bar.generateBarChart(session, out , taskNum , tasksList);

filename = "/DisplayChart?filename=" + filename;

分享到:
评论

相关推荐

    JFreeChar柱状图实例

    **JFreeChart 柱状图实例详解** 在Java编程中,JFreeChart是一个强大的开源图表库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图等,使得开发者能够轻松地在应用程序中创建高质量的可视化数据。本实例...

    JFreeChar制作饼图和柱状图

    JFreeChart是一款强大的Java图形库,它允许开发者创建各种类型的统计图表,如饼图、柱状图、线图、散点图等。在Java应用程序中,JFreeChart为数据可视化提供了丰富的功能,使得数据的展示更为直观易懂。在本教程中,...

    jfreeChar 折线图+柱形图(混合图) +最新Jar包及例子

    JFreeChart 是一个开源的Java库,用于生成高质量的、多样的图表,包括折线图、柱形图、饼图、散点图等。在这个特定的案例中,我们关注的是如何利用JFreeChart来创建折线图和柱形图的混合图表,这种图表在数据可视化...

    jfreechar 实现生成柱状图,饼图,曲线,

    JFreeChart 是一个开源的Java库,用于生成各种类型的图表,包括柱状图、饼图和曲线图等。它提供了一种灵活的方式来创建高质量的2D图表,可以在各种Java应用程序中使用,例如桌面应用、Web应用或者服务器端应用。下面...

    JFreeChar 动态横向柱状图

    JFreeChar 动态横向柱状图,带纵向滚动条,可根据数据自动计算滚动条长度,可自定义系统柱子颜色,定时刷新

    JFreeChar 柱图实现

    在数据分析与展示领域,柱状图(Bar Chart)是一种非常常见的数据可视化工具,它能够直观地比较不同类别的数值大小,尤其适用于显示离散数据集。JFreeChart作为Java平台上的一个开源图表库,提供了丰富的API来创建...

    JFreeChar图表生成柱状图和饼状图源码

    在"JFreeChar图表生成柱状图和饼状图源码"的压缩包中,我们很可能找到了创建这两种图表的示例源代码。 柱状图是一种常用的数据可视化工具,它将数据的每个类别表示为一个垂直或水平的矩形条,长度表示数值大小。...

    jfreechar各种图

    JFreeChart是一款强大的Java库,用于创建各种类型的图表,如折线图、柱状图、饼图、散点图、甘特图等。这个库在IT行业中被广泛使用,特别是在需要进行数据可视化的应用程序中。它允许开发人员通过简单的API调用来...

    jfreechar统计图操作技巧

    JFreeChart是一款强大的Java图形库,它为开发者提供了丰富的图表类型,包括柱状图、饼图、线形图等,使得在项目开发中能够轻松地将数据库中的数据以直观、生动的方式展示出来。本文将深入探讨JFreeChart的使用技巧,...

    JfreeChar学习资料 JfreeChar学习资料

    JFreeChart 是一个用于Java平台的开源图表库,它提供了丰富的图表类型,包括柱状图、饼图、线形图、散点图、甘特图等,使得开发者能够方便地在应用程序中生成高质量的可视化数据。本学习资料将深入探讨JFreeChart的...

    java实现柱状图

    Java 实现柱状图 Java 实现柱状图是指使用 Java 语言创建柱状图、饼状图、曲线图等图形的一种技术。通过使用 JFreeChart 库,可以轻松地创建各种类型的图形。下面将对 Java 实现柱状图的相关知识点进行详细介绍。 ...

    jfreechar 雷达图 带刻度

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图表类型,包括柱状图、饼图、线图、散点图以及我们关注的雷达图。雷达图,也称为蜘蛛图或星形图,是一种多变量数据可视化工具,常用于比较多个类别的数据...

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图 直接导入eclipse 或myeclipse 即可运行,里面含有lib ,及运行详细说 如:&lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts ...

    JFreeChar实现曲线图:lib+Demo

    JFreeChart是一款强大的开源Java图表库,它提供了丰富的图表类型,包括柱状图、饼图、折线图、曲线图、散点图等,使得开发者能够轻松地在Java应用中插入美观且功能齐全的图表。在本篇内容中,我们将深入探讨如何利用...

    jfreechar最新jar包

    bar charts (regular and stacked, with an optional 3D effect):柱状图 line and area charts:曲线图 scatter plots and bubble charts time series, high/low/open/close charts and candle stick charts:...

    jfreechar画图源代码

    JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,如饼状图、柱状图、曲线图等,广泛应用于数据可视化和报告生成。本资料提供的"jfreechar画图源代码"包含了作者自己编写的能运行并显示结果的...

    JFreeChar 图形拖拉

    发现有关JFreeChar 拖拉的东西网上资源忒少,所以就花了点时间去研究了一下。这里面有柱状图,甘特图,折线图等拖拉的例子,相信对那些正在研究JFreeChar 和正在为JFreeChar 图形拖拉问题困扰的人有所帮助。

    JFreechar简单报表例子

    它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图、面积图、甘特图等,广泛应用于数据分析、报表制作以及各种Java应用程序中。JFreeChart通过其强大的API,使得开发者能够轻松地在程序中集成图表功能,动态...

    jfreechar完整的例子

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图表类型,如柱状图、饼图、线形图、散点图、甘特图等,适用于各种数据分析和展示的需求。这个压缩包“JfreeChar完整的例子”包含了使用JFreeChart创建...

Global site tag (gtag.js) - Google Analytics