80Echarts - 散点图(Scatter Nutrients)

匿名 (未验证) 提交于 2019-12-02 23:32:01
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20042935/article/details/89839588

效果图

源代码

var indices = {     name: 0,     group: 1,     id: 16 }; var schema = [     {name: 'name', index: 0},     {name: 'group', index: 1},     {name: 'protein', index: 2},     {name: 'calcium', index: 3},     {name: 'sodium', index: 4},     {name: 'fiber', index: 5},     {name: 'vitaminc', index: 6},     {name: 'potassium', index: 7},     {name: 'carbohydrate', index: 8},     {name: 'sugars', index: 9},     {name: 'fat', index: 10},     {name: 'water', index: 11},     {name: 'calories', index: 12},     {name: 'saturated', index: 13},     {name: 'monounsat', index: 14},     {name: 'polyunsat', index: 15},     {name: 'id', index: 16} ];  var fieldIndices = schema.reduce(function (obj, item) {     obj[item.name] = item.index;     return obj; }, {});  var groupCategories = []; var groupColors = []; var data;  // zlevel 为 1 的层开启尾迹特效 myChart.getZr().configLayer(1, {     motionBlur: 0.5 })   $.get('./data/asset/data/nutrients.json', function (originData) {     data = normalizeData(originData).slice(0, 1000);      myChart.setOption(option = getOption(data)); });   function normalizeData(originData) {     var groupMap = {};     originData.forEach(function (row) {         var groupName = row[indices.group];         if (!groupMap.hasOwnProperty(groupName)) {             groupMap[groupName] = 1;         }     });      originData.forEach(function (row) {         row.forEach(function (item, index) {             if (index !== indices.name                 && index !== indices.group                 && index !== indices.id             ) {                 // Convert null to zero, as all of them under unit "g".                 row[index] = parseFloat(item) || 0;             }         });     });      for (var groupName in groupMap) {         if (groupMap.hasOwnProperty(groupName)) {             groupCategories.push(groupName);         }     }     var hStep = Math.round(300 / (groupCategories.length - 1));     for (var i = 0; i < groupCategories.length; i++) {         groupColors.push(echarts.color.modifyHSL('#5A94DF', hStep * i));     }      return originData; }  function getOption(data) {      return {         backgroundColor: '#2c343c',         tooltip: {             padding: 10,             backgroundColor: '#222',             borderColor: '#777',             borderWidth: 1         },         xAxis: {             name: 'protein',             splitLine: {show: false},             axisLine: {                 lineStyle: {                     color: '#fff'                 }             },             axisLabel: {                 textStyle: {                     color: '#fff'                 }             },             axisTick: {                 lineStyle: {                     color: '#fff'                 }             }         },         yAxis: {             name: 'calcium',             splitLine: {show: false},             axisLine: {                 lineStyle: {                     color: '#fff'                 }             },             axisLabel: {                 textStyle: {                     color: '#fff'                 }             },             axisTick: {                 lineStyle: {                     color: '#fff'                 }             }         },         visualMap: [{             show: false,             type: 'piecewise',             categories: groupCategories,             dimension: 2,             inRange: {                 color: groupColors //['#d94e5d','#eac736','#50a3ba']             },             outOfRange: {                 color: ['#ccc'] //['#d94e5d','#eac736','#50a3ba']             },             top: 20,             textStyle: {                 color: '#fff'             },             realtime: false         }, {             show: false,             dimension: 3,             max: 1000,             inRange: {                 colorLightness: [0.15, 0.6]             }         }],         series: [             {                 zlevel: 1,                 name: 'nutrients',                 type: 'scatter',                 data: data.map(function (item, idx) {                     return [item[2], item[3], item[1], idx];                 }),                 animationThreshold: 5000,                 progressiveThreshold: 5000             }         ],         animationEasingUpdate: 'cubicInOut',         animationDurationUpdate: 2000     }; }  var fieldNames = schema.map(function (item) {     return item.name; }).slice(2);  app.config = {     xAxis: 'protein',     yAxis: 'calcium',     onChange: function () {         if (data) {             myChart.setOption({                 xAxis: {                     name: app.config.xAxis                 },                 yAxis: {                     name: app.config.yAxis                 },                 series: {                     data: data.map(function (item, idx) {                         return [                             item[fieldIndices[app.config.xAxis]],                             item[fieldIndices[app.config.yAxis]],                             item[1],                             idx                         ];                     })                 }             });         }     } };  app.configParameters = {     xAxis: {         options: fieldNames     },     yAxis: {         options: fieldNames     } }; 
文章来源: https://blog.csdn.net/qq_20042935/article/details/89839588
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!