导入相应的包需要的文件;

aaarticlea/png;base64,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" alt="" />

前台调用:

  1. <script type="text/javascript">
  2. // 路径配置
  3. require.config({
  4. paths: {
  5. echarts: 'ec/jsp/profileOfProduct/echarts' //路径写到echarts这个总包即可
  6. }
  7. });
  8. // 使用
  9. require(
  10. [
  11. 'echarts',
  12. 'echarts/chart/line' // 使用条形图就加载bar模块,按需加载,即上图中chart包先的js
  13. ],
  14. function (ec) {
  15.  
  16. var myChart = ec.init(document.getElementById('main')); //图表的div1(主意div必须设置高度,否则图表不能显示)
  17. //ajax调用卸船量数据
  18. $.ajax({
  19. url:"${pageContext.request.contextPath}/ec/jsp/profileOfProduct/query.jsp",
  20. type: "GET",
  21. data:{"action":"queryPortLoad"},
  22. dataType: "text",
  23. async:true,
  24. success: function (data) {
  25. if (data) {
  26. var arr = eval("("+data+")");//将前台的json形式的字符串转换为json数据
  27. var option = arr.option;
  28. myChart.clear();
  29. myChart.setOption(option);
  30. myChart.refresh();
  31. }
  32. },
  33. });
  34. }
  35. );
  36. </script>

后台组织数据

  数据格式参见echarts地址:http://echarts.baidu.com/echarts2/doc/example.html

  我的做法是根据前台不同图表的数据格式写成javaBean,按需要的格式设置Option的格式

  通过JsonObject类转换成json字符串返回前台代码如下:

  1. public void queryOption(HttpServletRequest request,HttpServletResponse response) {
  2. Session session= new Session(EcConnection.get());
  3.  
  4. try{
  5. String sql1 = "select P_NAME, max(month_num) month_num,DATE_MONTH "+
  6. " from PORT_LOAD_NUM WHERE P_NAME='一期码头' "+
  7. " group by DATE_MONTH,P_NAME "+
  8. " order by DATE_MONTH ";
  9. String sql2 = "select P_NAME, max(month_num) month_num,DATE_MONTH "+
  10. " from PORT_LOAD_NUM WHERE P_NAME='二期码头' "+
  11. " group by DATE_MONTH,P_NAME "+
  12. " order by DATE_MONTH ";
  13. String sql3 = "select P_NAME, max(month_num) month_num,DATE_MONTH "+
  14. " from PORT_LOAD_NUM WHERE P_NAME='杂货码头' "+
  15. " group by DATE_MONTH,P_NAME "+
  16. " order by DATE_MONTH ";
  17.  
  18. List<PortLoadNumBean> portLoadNumBeanList1 = session.queryForList(sql1, 0, 10000000, PortLoadNumBean.class);
  19. List<PortLoadNumBean> portLoadNumBeanList2 = session.queryForList(sql2, 0, 10000000, PortLoadNumBean.class);
  20. List<PortLoadNumBean> portLoadNumBeanList3 = session.queryForList(sql3, 0, 10000000, PortLoadNumBean.class);
  21.  
  22. //拼装json
  23. LineOption lineOption = new LineOption();//option对象,改对象的属性值都是json中需要设定的,最后将该对象转换成json字符串返回前台即可
  24. lineOption.setTooltip(new Tooltip());
  25. lineOption.setLegend(new Legend());
  26. List<Object> xAxis = new ArrayList<Object>();
  27.  
  28. //查询月份
  29. String sqlMonth = "select distinct DATE_MONTH from PORT_LOAD_NUM where 1=? order by DATE_MONTH ";
  30. List<String> months = session.queryForColumnList(String.class, sqlMonth, "1");
  31. StringBuilder sb = new StringBuilder();
  32. sb.append("[");
  33. for (String month : months) {
  34. sb.append("'");
  35. sb.append(month);
  36. sb.append("'");
  37. sb.append(",");
  38. }
  39. String monthss = sb.toString().substring(0, sb.toString().length()-1);
  40. monthss += "]";
  41. String xAxisStr = "{type : 'category',boundaryGap : false,data : "+monthss+"}";
  42. xAxis.add(xAxisStr);
  43. lineOption.setxAxis(xAxis);
  44.  
  45. List<Object> yAxis = new ArrayList<Object>();
  46. String yAxisStr = "{ type : 'value'}";
  47. yAxis.add(yAxisStr);
  48. lineOption.setyAxis(yAxis);
  49.  
  50. List<Object> series = new ArrayList<Object>();
  51. Series series1 = new Series();
  52.  
  53. ArrayList<Object> dataList1 = new ArrayList<Object>();
  54. for ( PortLoadNumBean bean : portLoadNumBeanList1) {
  55. dataList1.add(bean.getMonth_num()/10000);
  56. }
  57. series1.setName("一期码头");
  58. series1.setData(dataList1);
  59. series.add(series1);
  60.  
  61. Series series2 = new Series();
  62. ArrayList<Object> dataList2 = new ArrayList<Object>();
  63. for ( PortLoadNumBean bean : portLoadNumBeanList2) {
  64. dataList2.add(bean.getMonth_num()/10000);
  65. }
  66. series2.setName("二期码头");
  67. series2.setData(dataList2);
  68. series.add(series2);
  69.  
  70. Series series3 = new Series();
  71. ArrayList<Object> dataList3 = new ArrayList<Object>();
  72. for ( PortLoadNumBean bean : portLoadNumBeanList3) {
  73. dataList3.add(bean.getMonth_num()/10000);
  74. }
  75. series3.setName("杂货码头");
  76. series3.setData(dataList3);
  77. series.add(series3);
  78.  
  79. lineOption.setSeries(series);
  80.  
  81. JSONObject jo = new JSONObject();
  82. jo.put("option", lineOption);
  83. try {
  84. response.getWriter().write(jo.toString());
  85. } catch (IOException e) {
  86. e.printStackTrace();
  87. }
  88.  
  89. }finally{
  90. session.close();
  91. }
  92. }

echarts实现条形图表的更多相关文章

  1. echarts生成的图表大小怎么随屏幕的大小改变自适应

    最近在做图表,记录一下用到的知识点,当做自己的日记吧,会不断添加新内容 1,echarts生成的图表大小怎么随屏幕的大小改变自适应? this.chart.setOption(this.options ...

  2. 通过百度echarts实现数据图表展示功能

    现在我们在工作中,在开发中都会或多或少的用到图表统计数据显示给用户.通过图表可以很直观的,直接的将数据呈现出来.这里我就介绍说一下利用百度开源的echarts图表技术实现的具体功能. 1.对于不太理解 ...

  3. 利用Echarts设计一个图表平台(一)

    Echarts是一款百度的开源图表库,里面提供了非常多的图表样式,我们今天要讲的内容是利用这一款开源js图表,制作一个能够动态定制的图表平台. 1)Echarts API介绍 首先我们先来看一下Ech ...

  4. 如何快速使用ECharts绘制可视化图表

    1.在ECharts官网,下载ECharts的源码和示例文件. 2.解压缩下载下来的Echars压缩包,找到doc\example\www\echartsjs目录,将里面的js文件全部取出来,放到项目 ...

  5. vue+echarts 动态绘制图表以及异步加载数据

    前言 背景:vue写的后台管理,需要将表格数据绘制成图表(折线图,柱状图),图表数据都是通过接口请求回来的. 安装 cnpm install echarts --s (我这里用了淘宝镜像,不知道同学自 ...

  6. ECharts导出word 图表模糊失真

    在项目中会有这样的需求,echars生成图表导入到word中 在项目中用的插件 博主有一篇文章将的是  vue使用jquery的三方插件jquery.wordexport.js   https://b ...

  7. Echarts 一个开源图表设计工具

    一般来说,因有所需,方有所求.最近项目中有这方面的需求,用着感觉不错.特此记录!此处仅是一个简单的demo.官网地址:http://echarts.baidu.com/,相关文档.插件都有. 1.js ...

  8. [echarts] - echarts量化比较图表类型解析

    https://echarts.baidu.com/examples/editor.html?c=watermark <!DOCTYPE html> <!--用作两种货品的参数对比- ...

  9. mpvue 使用echarts动态绘制图表(数据改变重新渲染图表)

    最近在公司开发一款微信小程序,按照客户需求用饼状图显示当前设备状态(开机.故障.关机),于是就在网上寻找各种资料,找了很多mpvue使用关于echarts绘制图表,最终功夫不负有心人,找到一篇关于mp ...

随机推荐

  1. Posix消息队列

    转载于:http://blog.csdn.net/zx714311728/article/details/53197196 1.消息队列 消息队列可以认为是一个消息链表,消息队列是随内核持续的.队列中 ...

  2. poj 3617 Best Cow Line

    http://poj.org/problem;jsessionid=F0726AFA441F19BA381A2C946BA81F07?id=3617 Description FJ is about t ...

  3. string类find函数返回值判定

     string类find函数返回值判定 代码示例 #include<iostream> #include<cstring> using namespace std; int m ...

  4. 【Linux命令与工具】系统资源查看——free、uname、dmesg以及netstat

    free:查看内存的使用情况 用法: free [-b|-k|-m|-g] [-t] 参数: -b: 直接输入free时,显示的单位是KB我们可以使用b(bytes), m(MB), k(KB), g ...

  5. UIDatePicker 日期/时间选取器(滚轮)—IOS开发

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  6. 记一次动画的优化--requestAnimationFrame、webp

    需要写一个类似帧动画的东西,但是每一帧是一张全屏的图,而且量特别大,600都张,而且存在跳帧的问题,只有把速度调的很快还可以看着不跳帧.但是只用谷歌还真正常播放. 其实优化起来两个方面.一个是用req ...

  7. [问题2015S07] 复旦高等代数 II(14级)每周一题(第八教学周)

    [问题2015S07]  设 \(A\) 为 \(n\) 阶复方阵, 证明: 存在 \(n\) 阶非异复对称阵 \(S\), 使得 \(A'=S^{-1}AS\), 即 \(A\) 可通过非异复对称阵 ...

  8. 用jquery实现简单的表单验证

    HTML代码: 1 <form action="" method="post" id="form-data"> 2 <di ...

  9. 备用帖子1Shell(Shell R语言)

    shell========================== echo 1 > /proc/sys/vm/drop_caches 清理内存 free -m du -h --max-depth= ...

  10. Java使用BigDecimal精确计算的简单公式计算器

    由于工作需要,写了一个使用BigDecimal运算的精确计算的计算器(然后发现其实比不用BigDecimal的并好不到哪里去) 只能做加减乘除 double类型的数字在千万级别的时候会转成科学计数法, ...