[eCharts,angularjs]echarts小试-龙虎榜数据显示
echarts小试-龙虎榜数据显示
echarts代码段:
1 $scope.makeJson = function(){ // 数据整理 2 var jsonData = { 3 nodes:[] 4 ,edges:[] 5 ,categories:[] 6 }; 7 var yybCode = {}; 8 for (var i = 0 ; i < ggDatas.data.length; i++) { // 个股数据整理 9 var gg = ggDatas.data[i]; 10 var rgbColor = "#4f19c7"; 11 if(gg.JmMoney){ 12 rgbColor = gg.JmMoney>0?"red":(gg.JmMoney<0?"green":rgbColor); 13 } 14 jsonData.categories.push({name:gg.SName}); 15 jsonData.nodes.push({ 16 "color": rgbColor, 17 "label": gg.SName, 18 "attributes": { 19 category: gg.SName // 与类别目录绑定 20 //name:gg.SName 21 }, 22 "y": Math.random() * 800, 23 "x": Math.random() * 1000, 24 "id": gg.SCode, 25 "other": {type:"gg",data:gg}, 26 "size": (gg.SumCount * 10)>20?20:(gg.SumCount * 10) 27 }); 28 for (var j = 0 ; j < yybData[$scope.yybGGCodeTag2+gg.SCode].data.length; j++) { // 营业部数据整理 29 var yyb = yybData[$scope.yybGGCodeTag2+gg.SCode].data[j]; 30 var yybKey = $scope.yybGGCodeTag2+yyb.SalesCode; 31 var yybTmp = $.extend(true, {}, yyb); 32 if(yybCode[yybKey]){ 33 yybCode[yybKey]++; 34 //console.log('营业部存在',yybKey,yybCode[yybKey]); 35 var againYYB = jsonData.nodes.filter(function(e){return e.id == yyb.SalesCode;}) 36 //console.log(againYYB,yybCode[yybKey]); 37 againYYB[0].size = parseInt(yybCode[yybKey])*10; 38 againYYB[0].other.data.SumPMoney = parseInt(againYYB[0].other.data.SumPMoney) + parseInt(yyb.SumPMoney); 39 againYYB[0].color = againYYB[0].other.data.SumPMoney>0?"red":(againYYB[0].other.data.SumPMoney<0?"green":"#4f19c7") 40 } else { 41 yybCode[yybKey] = 1; 42 jsonData.nodes.push({ 43 "color": parseInt(yyb.SumPMoney)>0?"red":(parseInt(yyb.SumPMoney)<0?"green":"#4f19c7"), 44 "label": yyb.SalesName 45 .replace("责任","") 46 .replace("股份","") 47 .replace("有限","") 48 .replace("公司","") 49 .replace("证券营业部","") 50 .replace("营业部",""), 51 "attributes": { 52 category: gg.SName // 与类别目录绑定 53 //name:gg.SName 54 }, 55 "y": Math.random() * 800, 56 "x": Math.random() * 1000, 57 "id": yyb.SalesCode, 58 "other": {type:"yyb",data:yyb}, 59 "size": parseInt(yybCode[yybKey])*10 60 61 }); 62 } 63 64 jsonData.edges.push({ 65 "sourceID": gg.SCode, 66 "attributes": {}, 67 "targetID": yyb.SalesCode, 68 "other": {type:"line",data1:gg,data2:yybTmp}, 69 "size": 1 70 }); 71 72 } 73 $scope.jsonData = jsonData; 74 } 75 //console.log(jsonData); 76 $scope.dealWithData(jsonData); // 显示数据到echarts 77 }; 78 79 $scope.drawECharts = function(){ // echarts初期化 80 // 基于准备好的dom,初始化echarts实例 81 $scope.myChart = echarts.init(document.getElementById('main')); 82 $scope.myChart.showLoading(); 83 $scope.myChartBar = echarts.init(document.getElementById('bar')); 84 }; 85 86 $scope.makeBar = function(params){ // 侧边图标处理 87 var labelRight = { 88 normal: { 89 position: 'right' 90 } 91 }; 92 var labelLeft = { 93 normal: { 94 position: 'left' 95 } 96 }; 97 var sublink = 'http://cnblogs.com/wangxinsheng'; 98 var nameListData = []; 99 var dataList = []; 100 var dataName = ""; 101 var subtextStr = "单位(万元)"; 102 var titleStr = ""; 103 if(params.data.other.type=="yyb"){ 104 var curSalesCode = params.data.other.data.SalesCode; 105 subtextStr = Math.round(params.data.other.data.SumPMoney/100)/100 +" 单位(万元)"; 106 var YYBList = $scope.jsonData.edges.filter(function(e){ 107 return e.other.data2.SalesCode == curSalesCode; 108 }); 109 for (var i = 0 ; i < YYBList.length; i++) { 110 var yyb = YYBList[i].other.data2; 111 //var gg = YYBList[i].other.data1; 112 nameListData.push(yyb.SName); 113 dataName = "净买入额"; 114 dataList.push({ 115 value: Math.round(yyb.SumPMoney/100)/100 , label: yyb.SumPMoney<0? labelRight : labelLeft, 116 itemStyle: { 117 normal: { 118 color: yyb.SumPMoney<0? "green" : "red" 119 } 120 } 121 }); 122 } 123 titleStr = yyb.SalesName; 124 selSalesCode = yyb.SalesCode; 125 } else if (params.data.other.type=="gg"){ 126 var curSCode = params.data.other.data.SCode; 127 subtextStr = Math.round(params.data.other.data.JmMoney/100)/100 +" 单位(万元)"; 128 var YYBList = $scope.jsonData.edges.filter(function(e){ 129 return e.other.data1.SCode == curSCode; 130 }); 131 for (var i = 0 ; i < YYBList.length; i++) { 132 var yyb = YYBList[i].other.data2; 133 nameListData.push(yyb.SalesName?yyb.SalesName 134 .replace("责任","") 135 .replace("股份","") 136 .replace("有限","") 137 .replace("公司","") 138 .replace("证券营业部","") 139 .replace("营业部",""):""); 140 dataName = "净买入额"; 141 dataList.push({ 142 value: Math.round(yyb.SumPMoney/100)/100 , label: yyb.SumPMoney<0? labelRight : labelLeft, 143 itemStyle: { 144 normal: { 145 color: yyb.SumPMoney<0? "green" : "red" 146 } 147 } 148 }); 149 } 150 titleStr = params.data.other.data.SName; 151 } else { 152 return; 153 } 154 $scope.myChartBar.showLoading(); 155 $scope.myChartBar.setOption(option = { 156 title: { 157 text: titleStr, 158 subtext: subtextStr, 159 sublink: sublink 160 }, 161 tooltip : { 162 trigger: 'axis', 163 axisPointer : { 164 type : 'shadow' 165 } 166 }, 167 grid: { 168 top: 80, 169 bottom: 30 170 }, 171 xAxis: { 172 type : 'value', 173 position: 'top', 174 splitLine: {lineStyle:{type:'dashed'}} 175 }, 176 yAxis: { 177 type : 'category', 178 axisLine: {show: false}, 179 axisLabel: {show: false}, 180 axisTick: {show: false}, 181 splitLine: {show: false}, 182 data : nameListData 183 }, 184 series : [ 185 { 186 name:dataName, 187 type:'bar', 188 stack: '总量', 189 label: { 190 normal: { 191 show: true, 192 formatter: '{b}' 193 } 194 }, 195 data:dataList 196 } 197 ] 198 }); 199 200 $scope.myChartBar.hideLoading(); 201 202 }; 203 204 $scope.dealWithData = function(json) { // echarts绑定数据显示图表 205 $scope.myChart.hideLoading(); 206 $scope.myChart.setOption(option = { 207 title: { 208 text: '东方财富网-龙虎榜大数据处理', 209 left:0, 210 bottom:0 211 }, 212 legend: [{ 213 // selectedMode: 'single', 214 data: json.categories.map(function (a) { 215 return a.name; 216 }) 217 }], 218 animationDurationUpdate: 1500, 219 animationEasingUpdate: 'quinticInOut', 220 series : [ 221 { 222 type: 'graph', 223 layout: 'none', 224 // progressiveThreshold: 700, 225 data: json.nodes.map(function (node) { 226 return { 227 x: node.x, 228 y: node.y, 229 id: node.id, 230 name: node.label, 231 symbolSize: node.size, 232 itemStyle: { 233 normal: { 234 color: node.color 235 } 236 }, 237 other: node.other, 238 category: node.attributes.category, 239 size:node.size 240 }; 241 }), 242 edges: json.edges.map(function (edge) { 243 return { 244 source: edge.sourceID, 245 target: edge.targetID, 246 other: edge.other 247 }; 248 }), 249 label: { 250 emphasis: { 251 position: 'right', 252 show: true 253 } 254 }, 255 roam: true, 256 focusNodeAdjacency: true, 257 lineStyle: { 258 normal: { 259 width: 0.5, 260 curveness: 0.3, 261 opacity: 0.7 262 } 263 }, 264 categories: json.categories // 上部分类别目录设定 265 } 266 ], 267 tooltip:{ // 提示框内容设定 268 show:true, 269 trigger: 'graph', 270 confine:true, 271 showDelay: 0, 272 hideDelay: 50, 273 transitionDuration:0, 274 formatter: function (params,ticket,callback) { 275 var result = ""; 276 //console.log(params); 277 if(params.data.other){ 278 if(params.data.other.type=="gg"){ 279 var gg = params.data.other.data; 280 result = ""+gg.SName +"" 281 + "<br />上榜次数: " 282 + gg.SumCount 283 + "<br />最近日期: " 284 + gg.Tdate 285 + "<br />净买额: " 286 + Math.round(gg.JmMoney /100)/100 + " 万元" 287 + "<br />机构净买额: " 288 + Math.round(gg.JGJMMoney /100)/100 + " 万元" 289 + "<br />机构买卖次数: " 290 + "买:"+gg.JGBSumCount+" 次,卖:"+ gg.JGSSumCount+" 次" 291 + "<br />月涨跌幅: " 292 + Math.round(gg.Rchange1m * 100)/100 + " %"; 293 } else if(params.data.other.type=="yyb"){ 294 var yyb = params.data.other.data; 295 result = "" 296 +yyb.SalesName 297 .replace("责任","") 298 .replace("股份","") 299 .replace("有限","") 300 .replace("公司","") 301 .replace("证券营业部","") 302 .replace("营业部","") 303 + "<br />上榜股票数量: " 304 + parseInt(params.data.size)*0.1 + " 只" 305 + "<br />总净买额: " 306 + Math.round(yyb.SumPMoney /100)/100 + " 万元"; 307 } else if (params.data.other.type=="line"){ 308 var gg = params.data.other.data1; 309 var yyb = params.data.other.data2; 310 result = gg.SName + " > " 311 +yyb.SalesName 312 .replace("责任","") 313 .replace("股份","") 314 .replace("有限","") 315 .replace("公司","") 316 .replace("证券营业部","") 317 .replace("营业部",""); 318 } 319 } else { 320 //console.log(params); 321 } 322 return result; 323 } 324 }, 325 toolbox: { 326 show: true, 327 orient: 'vertical', 328 left: 'right', 329 top: 'center', 330 feature: { 331 restore: {}, 332 saveAsImage: {} 333 } 334 } 335 }, true); 336 337 $scope.myChart.on("click",function(param){ 338 $scope.makeBar(param); 339 }); 340 341 };
源码下载: