JfreeChart与struts2结合生成直方图

本文详细介绍如何使用JFreeChart生成3D直方图,并配置图表样式,最终将其嵌入Struts框架中生成报表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)生成对应的数据源DataSet,如直方图CategoryDataset、折线图CategoryPlot

(2)使用ChartFactory生成与DataSet相对应的Chart同时生成X/Y轴的数字

(3)设置Chart的X轴,Y轴上字体格式

(4)生成报表。

具体步骤如下:

(1) 生成对应的DataSet

private staticCategoryDataset getDoctorDataSet() {

             //创建一个3D直方图DefaultCategoryDataset数据源

             DefaultCategoryDataset dataset =new DefaultCategoryDataset();

             List<Map<String,Object>>list = new ArrayList<Map<String,Object>>();

            //在此处通过调用系统Service层与数据库的连接,将数据转化为Map然后放入List中

             for(Map<String,Object> m:list){

                    Object cs =m.get("cs");

                    //将数据源添加到DataSet中

dataset.addValue(Integer.parseInt(cs.toString()),doctor.get("doctorname").toString(),m.get("st").toString());

             }

             return dataset;

      }

(2)  使用ChartFactory生成报表

JFreeChart chart =ChartFactory.createBarChart3D("部门统计", //图表标题

                           "", // 目录轴的显示标签

                           "次数", //数值轴的显示标签

                           dataset, // 数据集

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

                           true,// 是否显示图例(对于简单的柱状图必须是 false)

                           false, // 是否生成工具

                           false // 是否生成 URL 链接

                           );

(3 )  设置X轴,Y轴显示编码

public static voidsetBar3DFont(JFreeChart chart) {

                    CategoryPlot plot =chart.getCategoryPlot();//设置标题字体

                    chart.getTitle().setFont(newFont("宋体", Font.PLAIN, 14));       //Y轴

                    NumberAxis numberaxis =(NumberAxis) plot.getRangeAxis();//X轴

                    CategoryAxis domainAxis =plot.getDomainAxis();

                    /*------设置X轴坐标上的文字-----------*/

                    domainAxis.setTickLabelFont(newFont("sans-serif", Font.PLAIN, 11));

                    /*------设置X轴的标题文字------------*/

                    domainAxis.setLabelFont(newFont("宋体", Font.PLAIN, 14));

                    /*------设置Y轴坐标上的文字-----------*/

                    numberaxis.setTickLabelFont(newFont("sans-serif", Font.PLAIN, 12));

                    /*------设置Y轴的标题文字------------*/

                    numberaxis.setLabelFont(newFont("黑体", Font.PLAIN, 12));

                    /*------这句代码解决了底部汉字乱码的问题-----------*/

                    chart.getLegend().setItemFont(newFont("宋体", Font.PLAIN, 12));

             }

      }

(4)   报表生成

为了生成报表,package 除了继承struts-default还需要继承jfreechart-dafault,在struts.xml中配置如下:

<package name="default" extends="struts-default,jfreechart-default">

<actionname="jfreeChart" class = "cn.test.JfreeCharAction" method= "{1}">

                    <resultname="success" type="chart"><!—在此type必须是chart-->

                           <paramname="width">800</param><!—设置生成图片宽度-->

                           <paramname="height">400</param><!—生成图片高—>

                    </result>

</action>  

</package>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值