fl军哥

导航

 

本周主要学习的是用java编写树状图、行业上下游图、行业关联图等echarts图的练习.如下所示:

树状图部分代码:

 1 <%@ include file="left.jsp"%>
 2 <%@ page language="java" contentType="text/html; charset=UTF-8"
 3     pageEncoding="UTF-8"%>
 4 <!DOCTYPE html>
 5 <html style="height: 100%">
 6 <head>
 7 <meta charset="UTF-8">
 8 <title>京津冀</title>
 9 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
10 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>
11 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/map/js/china.js"></script>
12 <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
13 </head>
14 <body style="height: 100%; margin: 0">
15     <div id=container style="height:100% ;left:100px;top:0px" ></div>
16     <script type="text/javascript">
17 
18 //$.get('flare.json', function (data) {
19      $(function() {
20             $.get('${pageContext.request.contextPath}/servlet?method=search',
21                     function(data) {
22                        // alert("123")
23                         init(data);
24                        // alert("1234")
25                         //alert(data);
26                     });
27         }); 
28          function init(data) {
29                 //alert(data)
30                 var data=data;
31                 
32                 var dom = document.getElementById("container");
33                 var myChart = echarts.init(dom);
34                 var app = {};
35                 option = null;
36                 myChart.showLoading();
37                 myChart.hideLoading();
38 
39     myChart.setOption(option = {
40             tooltip: {
41                 trigger: 'item',
42                 triggerOn: 'mousemove'
43             },
44             series: [
45                 {
46                     type: 'tree',
47 
48                     data: [data],
49 
50                     top: '1%',
51                     left: '7%',
52                     bottom: '1%',
53                     right: '20%',
54 
55                     symbolSize: 7,
56 
57                     label: {
58                         position: 'left',
59                         verticalAlign: 'middle',
60                         align: 'right',
61                         fontSize: 9
62                     },
63 
64                     leaves: {
65                         label: {
66                             position: 'right',
67                             verticalAlign: 'middle',
68                             align: 'left'
69                         }
70                     },
71 
72                     expandAndCollapse: true,
73                     animationDuration: 550,
74                     animationDurationUpdate: 750
75                 }
76             ]
77         });
78     
79 
80 if (option && typeof option === "object") {
81     myChart.setOption(option, true);
82 }
83 }
84        </script>
85 </body>
86 </html>

运行截图:

 

行业关联图关键代码:

  1 <%@ include file="left.jsp"%>
  2 <%@ page language="java" contentType="text/html; charset=UTF-8"
  3     pageEncoding="UTF-8"%>
  4 <!DOCTYPE html>
  5 <html>
  6 <head>
  7 <meta name="viewport" content="width=device-width" />
  8 <title>京津冀科研项目关系图</title>
  9 <script type="text/javascript"
 10     src="${pageContext.request.contextPath}/js/echarts.min.js"></script>
 11     <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script>
 12 
 13      <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js"></script> 
 14 
 15 <style type="text/css">
 16 html, body, #main {
 17     height: 100%;
 18     width: 100%;
 19     margin: 0;
 20     padding: 0
 21 }
 22 </style>
 23 </head>
 24 <body>
 25     <div id="main" style="height: 100%;left:200px;"></div>
 26     <script type="text/javascript">
 27         var myChart = echarts.init(document.getElementById('main'));
 28         myChart.showLoading(); 
 29         option = {
 30                 
 31                 tooltip: {
 32                     show: true, // 默认显示
 33                     showContent: true, // 是否显示提示框浮层
 34                     trigger: 'item', // 触发类型,默认数据项触发
 35                     triggerOn: 'mousemove', // 提示触发条件,mousemove鼠标移至触发,还有click点击触发
 36                     alwaysShowContent: false, // 默认离开提示框区域隐藏,true为一直显示
 37                     showDelay: 100, // 浮层显示的延迟,单位为 ms,默认没有延迟,也不建议设置。在 triggerOn 为 'mousemove' 时有效。
 38                     hideDelay: 2000, // 浮层隐藏的延迟,单位为 ms,在 alwaysShowContent 为 true 的时候无效。
 39                     enterable: false, // 鼠标是否可进入提示框浮层中,默认为false,如需详情内交互,如添加链接,按钮,可设置为 true。
 40                     position: 'right', // 提示框浮层的位置,默认不设置时位置会跟随鼠标的位置。只在 trigger 为'item'的时候有效。
 41                     confine: false, // 是否将 tooltip 框限制在图表的区域内。
 42                     // 外层的 dom 被设置为 'overflow: hidden',或者移动端窄屏,导致 tooltip 超出外界被截断时,此配置比较有用。
 43                     transitionDuration: 0.2, // 提示框浮层的移动动画过渡时间,单位是秒,设置为 0 的时候会紧跟着鼠标移动。
 44                 },
 45                 legend: { // 图例显示(显示在右上角),name:类别名称,icon:图例的形状(默认是roundRect圆角矩形)。
 46                     show: true,
 47                     data: [
 48                     ]
 49                 },
 50                 series: [{
 51                     type: 'graph', // 关系图
 52                     name: '京津冀科研项目关联:', // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。
 53                     layout: 'force', // 图的布局,类型为力导图,'circular' 采用环形布局,见示例 Les Miserables
 54                     legendHoverLink: true, // 是否启用图例 hover(悬停) 时的联动高亮。
 55                     hoverAnimation: true, // 是否开启鼠标悬停节点的显示动画
 56                     coordinateSystem: null, // 坐标系可选
 57                     xAxisIndex: 0, // x轴坐标 有多种坐标系轴坐标选项
 58                     yAxisIndex: 0, // y轴坐标 
 59                     force: { // 力引导图基本配置
 60                         // initLayout: , // 力引导的初始化布局,默认使用xy轴的标点
 61                         repulsion: 500, // 节点之间的斥力因子。支持数组表达斥力范围,值越大斥力越大。
 62                         gravity: 0.02, // 节点受到的向中心的引力因子。该值越大节点越往中心点靠拢。
 63                         edgeLength: 200, // 边的两个节点之间的距离,这个距离也会受 repulsion影响 。值越大则长度越长
 64                         layoutAnimation: true // 因为力引导布局会在多次迭代后才会稳定,这个参数决定是否显示布局的迭代动画
 65                         // 在浏览器端节点数据较多(>100)的时候不建议关闭,布局过程会造成浏览器假死。                        
 66                     },
 67                     roam: true, // 是否开启鼠标缩放和平移漫游。默认不开启,true 为都开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'
 68                     nodeScaleRatio: 0.6, // 鼠标漫游缩放时节点的相应缩放比例,当设为0时节点不随着鼠标的缩放而缩放
 69                     draggable: true, // 节点是否可拖拽,只在使用力引导布局的时候有用。
 70                     focusNodeAdjacency: true, // 是否在鼠标移到节点上的时候突出显示节点以及节点的边和邻接节点。
 71                     
 72                     edgeSymbol: ['none', 'none'], // 边两端的标记类型,可以是一个数组分别指定两端,也可以是单个统一指定。
 73                    
 74                     edgeSymbolSize: 10, // 边两端的标记大小,可以是一个数组分别指定两端,也可以是单个统一指定。
 75 
 76                     itemStyle: { // ========图形样式,有 normal 和 emphasis 两个状态。
 77                         
 78                         normal: { // 默认样式
 79                             label: {
 80                                 show: true
 81                             },
 82                             borderType: 'solid', // 图形描边类型,默认为实线,支持 'solid'(实线), 'dashed'(虚线), 'dotted'(点线)。
 83                             borderColor: 'rgba(205, 149, 12, 0.4)', // 设置图形边框为淡金色,透明度为0.4
 84                             borderWidth: 2, // 图形的描边线宽。为 0 时无描边。
 85                             opacity: 1 // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。默认0.5
 86 
 87                         },
 88                         emphasis: { // 高亮状态
 89 
 90                         }
 91                     },
 92                     lineStyle: { // ========关系边的公用线条样式。
 93                         normal: {
 94                             color: 'rgba(205, 149, 12, 0.4)',
 95                             width: '4', //线的粗细
 96                             type: 'solid', // 线的类型 'solid'(实线)'dashed'(虚线)'dotted'(点线)
 97                             curveness: 0.3, // 线条的曲线程度,从0到1
 98                             opacity: 0.5 // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。默认0.5
 99                         },
100                         emphasis: { // 高亮状态
101 
102                         }
103                     },
104                     label: { // ========结点图形上的文本标签
105                         normal: {
106                             show: true, // 是否显示标签。
107                             position: 'inside', // 标签的位置。['50%', '50%'] [x,y]
108                             textStyle: { // 标签的字体样式
109                                 color: '#BF3EFF', // 字体颜色 #cde6c7 #d1c7b7 #d9d6c3 #d3d7d4
110                                 fontStyle: 'normal', // 文字字体的风格 'normal'标准 'italic'斜体 'oblique' 倾斜
111                                 fontWeight: 'bolder', // 'normal'标准,'bold'粗的,'bolder'更粗的,'lighter'更细的,或100 | 200 | 300 | 400...
112                                 fontFamily: 'sans-serif', // 文字的字体系列
113                                 fontSize: 12, // 字体大小
114                             }
115                         },
116                         emphasis: { // 高亮状态
117 
118                         }
119                     },
120                     edgeLabel: { // ========连接线上的文本标签 
121                         normal: {
122                             show: false // 不显示连接线上的文字,如果显示只能显示结点的value值,而不是连接线的值
123                         },
124                         emphasis: { // 高亮状态
125 
126                         }
127                     },
128                     categories: [ // name(类别名称)要同legend(图例)按次序一致
129                         
130                     ],
131                     // 设置结点node的数据
132                     // category: 类别序号,从0开始
133                     // name: 结点图形显示的文字
134                     // value: 鼠标点击结点,显示的数字
135                     // symbolSize: 结点图形的大小
136                     // symbol: 类目节点标记图形,默然为圆形
137                     // label: 标签样式
138                     data: [
139                     ],
140                     links: [ // 设置连线edges的数据
141 
142                     ]
143                 }]
144             };
145         
146         
147         $.ajax({
148             
149             type : "post",
150             async : true,
151             url : "${pageContext.request.contextPath}/Servlet_2",
152             type:"POST",
153             data:
154                 {
155                 "method":"Guan"
156                 },
157             dataType:"json",
158             success:function(result) {
159                
160                 if(result)
161                 {
162                     myChart.hideLoading();
163                     myChart.setOption({        //加载数据图表
164                         legend:[
165                             {
166                             //    data:result[0]
167                             }
168                             
169                             
170                         ],//复选框头
171                         series: [
172                             {
173                                 categories:result[0],
174                                 data: result[1],
175                                 links:result[2]
176                              }
177                             ]
178                         
179                     });
180                 }
181                           
182            },
183             error : function(errorMsg) {
184                 //请求失败时执行该函数
185             alert("请求数据失败!");
186            // myChart.hideLoading();
187             }
188         });
189         myChart.setOption(option);
190     </script>
191 </body>
192 </html>

运行截图:

 

 行业上下游运行截图:

 

posted on 2020-03-29 20:06  信1705-2张小军  阅读(167)  评论(0编辑  收藏  举报