问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android中打造图表可以使用JFreeChart吗

发布网友 发布时间:2022-08-19 19:00

我来回答

1个回答

热心网友 时间:2023-10-26 13:49

  用JFreeChart绘制图表,可以绘制二维柱状图、三维柱状图、折线图、以及饼图,网上也有很多关于JFreeChart绘制图像的源码,但是还是需要自己去总结一下这个过程。


  对于图表并不陌生,office word中我们对数据进行分类汇总,最后在让我们自己把分类汇总的内容生成一个图表的样式。而在java web开发中,我们又一次遇见了,对于图表的汇总可选方案有多种,在这里使用的是JFreeChart。


  1、开发环境搭建。

  和图片上传的功能一样,JFreechart是一个开源项目,我们可以从网上下载想要的版本。 ,我们把下载的压缩包解压就可以看到如下目录结构:


  


  解压我们把lib中的jar包copy到我们项目的web-inf/lib目录中去。


  2、编写代码,显示图表的servlet。


  [java] view plaincopyprint?

  01.<SPAN style="FONT-SIZE: 14px">package com.bjpowernode.drp.statreport.web;

  02.

  03.

  04.import java.io.FileOutputStream;

  05.import java.io.IOException;

  06.import java.text.DecimalFormat;

  07.import java.text.NumberFormat;

  08.

  09.import javax.servlet.ServletException;

  10.import javax.servlet.ServletRequest;

  11.import javax.servlet.ServletResponse;

  12.import javax.servlet.http.HttpServlet;

  13.

  14.import org.jfree.chart.ChartFactory;

  15.import org.jfree.chart.ChartUtilities;

  16.import org.jfree.chart.JFreeChart;

  17.import org.jfree.chart.labels.StandardPieSectionLabelGenerator;

  18.import org.jfree.chart.plot.PiePlot3D;

  19.import org.jfree.data.general.DefaultPieDataset;

  20.

  21./**

  22. * 演示通过servlet直接输出图表

  23. * @author Winter Lau

  24. */

  25.public class ChartDemoServlet extends HttpServlet {

  26.    public void service(ServletRequest req, ServletResponse res)

  27.        throws ServletException, IOException

  28.    {

  29.        res.setContentType("image/jpeg");

  30.        DefaultPieDataset data = getDataSet();

  31.        JFreeChart chart = ChartFactory.createPieChart3D("水果产量图",

  32.        data,

  33.        true,

  34.        false,

  35.        false

  36.        );

  37.

  38.        //设置图表的百分比.

  39.        PiePlot3D plot=(PiePlot3D)chart.getPlot();

  40.        // 图片中显示百分比:默认方式

  41.        //plot.setLabelGenerator(new StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT));

  42.        // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位

  43.        plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));

  44.        // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例

  45.        plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})"));

  46.

  47.        //将图表输出到浏览器上.

  48.        ChartUtilities.writeChartAsJPEG(res.getOutputStream(),

  49.            1.0f,chart,400,300,null);

  50.    }

  51.    /**

  52.     * 获取一个演示用的简单数据集对象

  53.     * @return

  54.     */

  55.    private static DefaultPieDataset getDataSet() {

  56.        DefaultPieDataset dataset = new DefaultPieDataset();

  57.        dataset.setValue("苹果",100);

  58.        dataset.setValue("梨子",200);

  59.        dataset.setValue("葡萄",300);

  60.        dataset.setValue("香蕉",400);

  61.        dataset.setValue("荔枝",500);

  62.        return dataset;

  63.    }

  64.}

  65.

  66.

  67.</SPAN>

  package com.bjpowernode.drp.statreport.web;


  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.text.DecimalFormat;

  import java.text.NumberFormat;


  import javax.servlet.ServletException;

  import javax.servlet.ServletRequest;

  import javax.servlet.ServletResponse;

  import javax.servlet.http.HttpServlet;


  import org.jfree.chart.ChartFactory;

  import org.jfree.chart.ChartUtilities;

  import org.jfree.chart.JFreeChart;

  import org.jfree.chart.labels.StandardPieSectionLabelGenerator;

  import org.jfree.chart.plot.PiePlot3D;

  import org.jfree.data.general.DefaultPieDataset;


  /**

  * 演示通过servlet直接输出图表

  * @author Winter Lau

  */

  public class ChartDemoServlet extends HttpServlet {

  public void service(ServletRequest req, ServletResponse res)

  throws ServletException, IOException

  {

  res.setContentType("image/jpeg");

  DefaultPieDataset data = getDataSet();

  JFreeChart chart = ChartFactory.createPieChart3D("水果产量图",

  data,

  true,

  false,

  false

  );

  //设置图表的百分比.

  PiePlot3D plot=(PiePlot3D)chart.getPlot();

  // 图片中显示百分比:默认方式

  //plot.setLabelGenerator(new StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT));

  // 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位

  plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));

  // 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例

  plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})"));

  //将图表输出到浏览器上.

  ChartUtilities.writeChartAsJPEG(res.getOutputStream(),

  1.0f,chart,400,300,null);

  }

  /**

  * 获取一个演示用的简单数据集对象

  * @return

  */

  private static DefaultPieDataset getDataSet() {

  DefaultPieDataset dataset = new DefaultPieDataset();

  dataset.setValue("苹果",100);

  dataset.setValue("梨子",200);

  dataset.setValue("葡萄",300);

  dataset.setValue("香蕉",400);

  dataset.setValue("荔枝",500);

  return dataset;

  }

  }


  配置ChartDemoServlet:


  [html] view plaincopyprint?

  01.<SPAN style="FONT-SIZE: 14px">  <servlet>

  02.        <servlet-name>ChartDemoServlet</servlet-name>

  03.        <servlet-class>com.bjpowernode.drp.statreport.web.ChartDemoServlet</servlet-class>

  04.    </servlet>

  05.

  06.    <servlet-mapping>

  07.        <servlet-name>ChartDemoServlet</servlet-name>

  08.        <url-pattern>/servlet/statreport/FlowCardServlet</url-pattern>

  09.    </servlet-mapping>

  10.         </SPAN>

  <servlet>

  <servlet-name>ChartDemoServlet</servlet-name>

  <servlet-class>com.bjpowernode.drp.statreport.web.ChartDemoServlet</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>ChartDemoServlet</servlet-name>

  <url-pattern>/servlet/statreport/FlowCardServlet</url-pattern>

  </servlet-mapping>

  

  在浏览器中可以显示这个servlet,我们在浏览器中调用这个servlet:http://localhost:8080/InfgMan6.0/servlet/statreport/FlowCardServlet,我们的图表显示如下:


  


  然后我们再根据自己的需要,更改图例,更改图表列等,再嵌入到自己的网页中具体的位置.


  这个例子本身很简单,只不过又一次感受这个由陌生到到熟悉的过程,没有接触的时候,不敢开始,感觉神秘,当我们鼓足勇气去接触去尝试,发现其实很简单,人家写好了的源码,我们去引用这个包,并且去用,对于错误的地方,我们去看看源码,或者看看帮助文档,看看具体的这个类或者这个函数的参数是什么,代表的什么,哪里出现的错误,写这篇博客的目的是警醒自己要遵守学习的规律,勇敢走下去。

jfreechart的利与弊

jFreechart 前端表现还可以, 但后端SQL支持较弱,不像birt可以设置存储过程,交叉表。不支持AOP植入。birt: 后端功能挺强大的。可以自定义 AOP函数, 同时可以灵活调整数据源。对于前端展现,有些麻烦。需要自己配置CSS 加载library.但如果请美工专门做了设计,效果也能接受 。 它默认提供的报表控件(例如 ...

如何使用javabean汇入jfreechart生成的图表

如何使用javabean汇入jfreechart生成的图表 jfreechart 才不管你资料从哪来呢,jfreechart 也不提供资料库介面,你只需要按照 jfreechart 的要求提供资料即可。在word中如何使用spss生成的表格和图表! 问题描述:汇出的时候会出现乱码,试过网上的一些办法,还是不能 答案1:: 1)首先建立Excel的工作表,...

用jsp怎样生成柱状图,饼状图,折线图

JFreeChart 可以绘制饼状图,折线图,柱状图等. awt/swing里可以使用,JSP里也可以使用 JFreeChart是 Java平台下开源的图表类库,是一个完全基于Java的图表开发技术。支持的图表类型也比较丰富,比如饼图、柱状图、散点图、仪表盘、甘特图等多种图表,还可以生成Web图形报表。JFreeChart可导出PNG和JPEG格式的文件...

java中怎么样实现图形报表啊

FineReport就是纯java编写的报表工具,有丰富的图表功能,不仅提供了常见的图表类型。其中包括:条形图、柱状图、折线图、面积图、饼图、散点图、雷达图、仪表盘等,还支持多种类型的组合显示,并可以集成第三方图表。你可以查阅一下相关的文档,百度文库中就有。

Java开发jfreechart的折线图时,想要实现鼠标移向每个折点时只显示Y轴...

jfreechart只能产生静态图表,鼠标移上去显示的数值,实际上是靠html 的map来实现的,因此那个矩形框是浏览器显示的,与代码无关,所以也改不了的。至于只显示Y轴的值,请从chart得到plot,然后再从plot得到renderer,再自定义renderer的ToolTipGenerator,从而实现自定义的tooltip.如果想要更动态的图表,可以...

用jsp怎样生成柱状图,饼状图,折线图

jsp生成柱状图,饼状图,折线图可以借助于jfreechart。 1、柱状图的生成源码: /** * 生产柱状图 * @version 1.0 * @since */ @SuppressWarnings("serial") public class PillarServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) ...

使用jfreeChart,怎样删掉temp里的报表图片文件,大神帮忙

给你一种实现方式,供你参考:jfreeChart生成的图片名加上时间搓;将图片名称(包括时间戳)传到前台,如果需要就保存到数据库 平时不用管理temp文件夹 写个定时任务,删除过期文件(如一天执行一次,每次执行,删除,7天前的文件)

jfreechart柱状图 无法显示柱形数值

一 最简单的例子 为了降低门槛,让大家心理有个底,先介绍一个简单的不能再简单的例子,图片中的各类属性都采用默认值。这个 JSP 程序运行的结果如下图 【回贴】 [原创] 回复:用JFreeChart画统计分析柱状图(贰) 作者:拉萨狼 查看:0 回复:0 [第 2 楼] 发表于...

poi怎么在ppt中生成图表(如:柱图、曲线图之类)

回答:告诉你个小秘密:别指望单独拿poi生成图表了,生成不了。 要么就用poi整合excel下的vba生成图表,要不就就用报表软件比如jfreechart预先生成图表图片,然后把图表图片引入excel中。 我常用第二种方法。

有哪些用 JavaScript 实现的图形库

2. Canvasjs CanvasJS 是个易用的 HTML5 &amp; JavaScript 图表库,基于 Canvas 元素。Graphs 可以通过设备渲染,包括 iPhone,iPad,Android,Windows Phone,Microsoft Surface,Desktops 等等。它允许用户创建适用于所有设备,不影响 web 应用程序的功能和可维护性的富仪表盘。CanvcasJS 有着非常漂亮的主题...

飞机上可以使用wifi吗 飞机上可以使用流量吗 可以使用 宣布奖励事项可以使用 闲聊什么时候可以使用 新床多久可以使用 求可以使用多种 可以使用旋转力拔除的是 3d走势图带连线图表专业版专业版
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦到我把人家头打破流血了梦见我把人家头打破流血了是什么预兆_百度知 ... 电脑蓝屏0X0000007F 0X0000000A希望有高手帮下忙不要网上随便找一段拉... 梦见船在水上让我坐船 健康码显示没有实名认证怎么回事健康码未通过实名认证是怎么回事 梦见我在一条船上,水特别大,我想回老家 空调怎么调才是热风 超市理货员难做吗 超市理货员好干吗 我的农行网银的证件类型是:重号身份证,支付宝绑定银行卡时总是提示... 2020年7月23日日记 正月初六出生的女孩命硬 一生安乐富贵平安 炒方便面怎么做法 2021年农历正月初六出生的孩子运势好吗 五行缺什么 正月初六出生的人佛缘 佛缘很好运势亨通 老皇历2022农历正月初六运势,老黄历1975年农历正月十二出生运势 哪里有批发做牛排的牛肉?我是开西餐厅的,冰冻的和新鲜的均可 绍兴地区有做牛排批发的吗? 浙江衢州有做牛肉、牛排批发的吗? 谁知道豪客来的牛排怎么腌制的? 正月为什么不能上坟 正月上坟有什么讲究 东莞社保中途断了可以补交吗- 问一问 牛排要怎么做才好吃 始而……继而怎么造句 ……先……,然而……,继而……。怎么(⊙_⊙?)造句 怡然自得 怡然自乐有区别吗? 怎么煲鸡汤好喝又营养,诀窍都在这里 二零二一年的四月三号能不能上坟士祭祖吗? 私募股权和私募证券投资基金区别是什么? 是“惠崇《春江晚景》”还是“惠崇《春江晓景》” 劳动仲裁要经过哪些程序? 实体店怎样开通扫一扫 jfreechart如何画三维曲线图? 怎么弄一个扫一扫能连接WIFI的二维码 再要是直接加微信好友就好了 二维码 在用JFreeChart做图表时遇到的奇怪问题求解 用JFreeChart画好了一个柱状图,怎么通过鼠标响应显示到界面上,急急急,跪求啊 基于struts1.2的jfreechart绘制图表以图片的格式输出到JSP页面上,能让它在这个页面上有提示和点击功能吗 如何用jfreechart画树形图?急求。。 有其他更方便的工具也行。 你对(2017版)《大学生体质健康测试标准》有何认识?有何作用?对你的健康变化有何影响2500字论 一盘水果,小红吃了1&#47;2,小花吃了,剩下部分的1&#47;2刚好吃完,对还是错? 一盘水果,上午吃了它的二分之一,下午吃了剩下的二分之一,正好吃完对吗 有一盘水果,3个3个的数余2个,4个4个的数余3个,5个5个的数余4个。请问这盘水果最少有多少个? 已知一盘水果吃了它的三分之二吃了六个那么一盘苹果原来有几个苹果? 请问一下我在搞出纳,出资状况的表格如何置,棒棒忙谢谢 用“最初”“逐渐”“最后”造句 i57300u是不是很老了 i57300u是不是很老了? 2022年属虎人在辰时出生命好吗 有天贵吉星帮助 非酸枝家具沙发在制作过程中有掺料现象吗 做过之后底下垫高了拿掉之后为什么会流出来像水一样 新版qq五笔输入法如何用?好用吗