extjs建立jfreechart柱状图
来源:互联网 发布:适合干性皮肤的水 知乎 编辑:程序博客网 时间:2024/05/16 08:45
1.extjs前台代码
Ext.onReady(function() {Ext.state.Manager.setProvider(new Ext.state.CookieProvider());var dpm = 'submitter_dpm';var tools = [ {id : 'close',handler : function(e, target, panel) {panel.ownerCt.remove(panel, true);}} ];var viewport = new Ext.Viewport({listeners:{beforerender : function(){Ext.Ajax.request({url : '../sys_pro_stat/userAction_pro_stat_createBarChart',method : 'POST',params : {fields : dpm},success : function(response, options) {},failure : function(response, options) {Ext.MessageBox.alert('失败', '请求超时或网络故障,错误编号:'+ response.status);}});}},layout : 'fit',items : [ {xtype : 'portal',region : 'center',margins : '35 5 5 0',items : [ {columnWidth : .9,style : 'padding:10px 0 10px 10px',items : [ {title : '提案统计',tools : tools,html : '<p align="center"><img alt="提案统计" src="../sys_pro/stat/chart_dpm.jpeg"></p>'} ]} ]} ]});});
2.后台Java代码
public class UserAction_Stat extends UserAction {private Proposal proposal;private UserService_Stat uss;CategoryDataset dataset;String fields;JFreeChart chart;// 返回值为jfreechart导出的jpg图片的urlpublic String getStatictis() throws Exception {return uss.getStatictis();}public void createBarChart() {// 1.获取数据dataset = getDataSet();// 2.构造chartcreateBarChart3D();// 3. 处理chart中文显示问题processChart(chart);// 4. chart输出图片,获取图片路径writeChartAsImage(chart);}/** * 获取数据库数据 * */public CategoryDataset getDataSet() {DefaultCategoryDataset dataset = new DefaultCategoryDataset();List<Object[]> list = null;list = uss.loadDataFromDB(fields);Number value = 0;String rowKeys = null;String columnKeys = null;if("submitter_dpm".equals(fields)){rowKeys = "部门提案数";}else if("category".equals(fields)){rowKeys = "分类提案数";}for (Object[] object : list) {value = (Number) object[1];columnKeys = (String) object[0];dataset.addValue(value, rowKeys, columnKeys);}return dataset;}/** * 创建图例 * */public void createBarChart3D(){String xtitle = null;if("submitter_dpm".equals(fields)){xtitle = "部门";}else if("category".equals(fields)){xtitle = "类别";}chart = ChartFactory.createBarChart3D("提案总数统计", // 图表标题xtitle, // 目录轴的显示标签"数量", // 数值轴的显示标签dataset, // 数据集PlotOrientation.VERTICAL, // 图表方向:水平、垂直true, // 是否显示图例(对于简单的柱状图必须是false)true, // 是否生成工具true // 是否生成URL链接);}/** * 解决图表汉字显示问题 * * @param chart */public void processChart(JFreeChart chart) {chart.setBackgroundPaint(SystemColor.controlHighlight); // 设置图标标题字体 chart.getTitle().setFont(new Font("宋体", Font.PLAIN, 20)); CategoryPlot plot = chart.getCategoryPlot(); // 设置横轴标题字体 plot.getDomainAxis().setLabelFont(new Font("宋体", Font.PLAIN, 14)); plot.getDomainAxis().setCategoryLabelPositions( CategoryLabelPositions.UP_45); // 设置横轴标记的字体 plot.getDomainAxis().setTickLabelFont(new Font("宋体", Font.PLAIN, 12)); // 设置横轴标记字体颜色 plot.getDomainAxis().setTickLabelPaint(Color.RED); // 设置纵轴标题字体 plot.getRangeAxis().setLabelFont(new Font("宋体", Font.PLAIN, 14)); // 设置纵轴标记字体 NumberAxis3D numberAxis3D = (NumberAxis3D) plot.getRangeAxis(); numberAxis3D .setStandardTickUnits(NumberAxis3D.createIntegerTickUnits()); numberAxis3D.setTickLabelPaint(Color.RED); // 设置图例字体 BarRenderer3D renderer3D = (BarRenderer3D) plot.getRenderer(); renderer3D.setBaseLegendTextFont(new Font("宋体", Font.PLAIN, 14)); renderer3D.setSeriesPaint(0, Color.ORANGE); //设置数值显示在顶部 renderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer3D.setBaseItemLabelsVisible(true); renderer3D.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_CENTER)); renderer3D.setItemLabelAnchorOffset(10D);//设置柱形图上的文字偏离值 //设置柱形图大小比例 int k = dataset.getColumnCount(); if (k == 1) { plot.getDomainAxis().setLowerMargin(0.26); plot.getDomainAxis().setUpperMargin(0.66); } else if (k < 6) { double margin = (1.0 - k * 0.08) / 3; plot.getDomainAxis().setLowerMargin(margin); plot.getDomainAxis().setUpperMargin(margin); ((BarRenderer3D) plot.getRenderer()).setItemMargin(margin); } else { ((BarRenderer3D) plot.getRenderer()).setItemMargin(0.1); }}/** * 输出图片 * * @param chart */public void writeChartAsImage(JFreeChart chart) {String fileName = null;String folderName = "stat";String subPath = "/sys_pro/" + folderName;String tempJpegPath = ServletActionContext.getServletContext().getRealPath(subPath);if("submitter_dpm".equals(fields)){fileName = "chart_dpm.jpeg";}else if("category".equals(fields)){fileName = "chart_category.jpeg";}// 在目录下生成图片File file = new File(tempJpegPath + "/" + fileName);try {ChartUtilities.saveChartAsJPEG(file, chart, 800, 450);} catch (IOException e) {e.printStackTrace();}}// =====getter、setter====public UserService_Stat getUss() {return uss;}@Resource(name = "userServiceImp_stat_pro")public void setUss(UserService_Stat uss) {this.uss = uss;}public String getFields() {return fields;}public void setFields(String fields) {this.fields = fields;}}
0 0
- extjs建立jfreechart柱状图
- JFreeChart -- 柱状图
- jfreechart柱状图
- JFreeChart--柱状图
- JFreeChart中画柱状图
- JFreeChart 生成柱状图
- JFreeChart柱状图(转)
- jfreechart之柱状图
- JFreeChart: 基本柱状图
- JFreeChart生成柱状图
- JFreeChart生成柱状图
- JFreeChart 柱状图参数设置方法
- JFreeChart 笔记(柱状图)
- JFreeChart 柱状图参数设置方法
- jfreechart 柱状图 开发实例
- jfreechart的柱状图处理
- JFreeChart的柱状图实现
- JFreeChart最佳实践:柱状图
- 文章标题
- 正益工场为京西创客工场输送双创“软”实力
- AFNetworking3.0使用
- [Android实例] MQTT协议,Android消息推送
- 关于UIView的autoresizingMask属性
- extjs建立jfreechart柱状图
- eclipse不自动弹出提示(alt+/快捷键失效)
- c中static静态变量与全局变量的区别
- 依次加载listview的每一个item实现动画的效果
- 关于vs2012按下键盘有提示但是按下enter不能选中所选提示
- [Android实例] MQTT消息推送,即时通讯
- 屏幕监听
- ImageCoverFlow
- 高效C编程(上) 基础数据类型,Loop,寄存器分配,函数调用,指针别名 ARM