问答文章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,我们的图表显示如下:


  


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


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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华丽转身为什么在优酷看不了了之 《华丽转身:爱情不在服务区》txt全集下载 翡翠台华丽转身英文曲 matplotlib中plt.imshow函数画图出现的颜色问题 数字图像处理(c++ opencv):形态学图像处理-提取连通域 ...opencv做东西,网上的程序读着还可以,程序遇到问题不会改,一些函_百... 深度学习面试问题总结 | 传统图像处理——OpenCV 活虾如何在晚上保持存活状态进行保存? neu代表什么意思 民办学校和私立学校的区别是什么民办学校和私立学校的区别 正月初六出生的女孩命硬 一生安乐富贵平安 炒方便面怎么做法 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五笔输入法如何用?好用吗