首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在用echarts JS绘制图表时出错

我在用echarts JS绘制图表时出错
EN

Stack Overflow用户
提问于 2022-06-02 20:12:29
回答 1查看 309关注 0票数 0

当我试图绘制一个图形时,我会得到一个错误:echarts.min.js:45 Uncaught TypeError: Bind must be called on a function at bind (<anonymous>) at Bd (echarts.min.js:45:130031)

我的echarts-init.js:

代码语言:javascript
运行
复制
let domTemp = document.getElementById("main");
let mytempChart = echarts.init(domTemp, null, {
  renderer: 'canvas',
  useDirtyRect: false
});
var app = {};
var option;

runDaysDatas(sens_data_result, sens_name_list);
function runDaysDatas(sens_data_result, sens_name_list) {
  
    const sens_names = sens_name_list;
    
    const datasetWithFilters = [];
    const seriesList = [];
    echarts.util.each(sens_names, function (sens) {
      var datasetId = 'dataset_' + sens;
      datasetWithFilters.push({
        id: datasetId,
        fromDatasetId: sens_data_result,
        transform: {
          type: 'filter',
          config: {
            and: [
              { dimension: 'Uid', '=': sens }
            ]
          }
        }
      });
      seriesList.push({
        type: 'line',
        datasetId: datasetId,
        showSymbol: false,
        name: sens,
        endLabel: {
          show: true,
          formatter: function (params) {
            return params.value[3] + ': ' + params.value[0];
          }
        },
        labelLayout: {
          moveOverlap: 'shiftY'
        },
        emphasis: {
          focus: 'series'
        },
        encode: {
          x: 'Date',
          y: 'Temperature',
          label: ['Name', 'Temperature'],
          itemName: 'Date',
          tooltip: ['Temperature']
        }
      });
    });
    option = {
      animationDuration: 10000,
      dataset: [
        {
          id: 'dataset_sens_names',
          source: sens_data_result
        },
        ...datasetWithFilters
      ],
      title: {
        text: 'Temperature for Day'
      },
      tooltip: {
        order: 'valueDesc',
        trigger: 'axis'
      },
      xAxis: {
        type: 'category',
        nameLocation: 'middle'
      },
      yAxis: {
        name: 'Temperature'
      },
      grid: {
        right: 140
      },
      series: seriesList
    };
    mytempChart.setOption(option);
}

在sens_data_result中,我从api传递数据。在sens_name_list中,我传递传感器的名称。

控制台不会向我的脚本发送错误,它会在库中发誓。我从官方网站上拿了一个例子,为我的任务做了重新设计,用传感器的名字按一天的时间显示温度。在一个图表上可以有N个图。

寻求帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-05 19:35:38

好吧,我已经解决了问题,这是决定:

代码语言:javascript
运行
复制
let url = '/api/sensdata';

let domTemp = document.getElementById("main");
let mytempChart = echarts.init(domTemp, null, {
  renderer: 'canvas',
  useDirtyRect: false
});
var app = {};
var option;

$.get(
  url,
  sensors_uid,
  (_rawData) => {
    runDaysDatas(_rawData, sens_name_list);
  }
);

function runDaysDatas(_rawData, sens_names) {
  const datasetWithFilters = [];
  const seriesList = [];
  _rawData.unshift(['Name', 'Date', 'Humidity', 'Temperature']);

  echarts.util.each(sens_names, function (sens) {
    var datasetId = 'dataset_' + sens;
    datasetWithFilters.push({
      id: datasetId,
      fromDatasetId: 'dataset_raw',
      transform: {
        type: 'filter',
        config: {
          and: [
            { dimension: 'Name', '=': sens }
          ]
        }
      }
    });
    seriesList.push({
      type: 'line',
      datasetId: datasetId,
      showSymbol: false,
      name: sens,
      endLabel: {
        show: true,
        formatter: function (params) {
          return 'Uid ' + params.value[0] + ': ' + params.value[3] + '°C';
        }
      },
      labelLayout: {
        moveOverlap: 'shiftY'
      },
      emphasis: {
        focus: 'series'
      },
      encode: {
        x: 'Date',
        y: 'Temperature',
        label: ['Name', 'Temperature'],
        itemName: 'Temperature',
        tooltip: ['Temperature']
      },
    });
  });

console.log(seriesList);

  option = {
    toolbox: {
      show : true,
      feature : {
          magicType : {show: true, type: ['line', 'bar']},
          restore : {show: true},
          saveAsImage : {show: true}
      }
  },
  legend: {},
    dataset: [
      {
        id: 'dataset_raw',
        source: _rawData
      },
      ...datasetWithFilters
    ],
    tooltip: {
      order: 'valueDesc',
      trigger: 'axis'
    },
    xAxis: {
      type: 'time',
      nameLocation: 'middle',
      axisLabel: {
        formatter: (function(value){
          moment.locales('RU_ru');
            return moment(value).format('MM/DD HH:mm');
        })
    }
    },
    yAxis: [
      {
          type : 'value',
          axisLabel : {
              formatter: '{value} °C'
          }
      }
  ],
    grid: {
      right: 140
    },
    series: seriesList
  };
  
  mytempChart.clear();
  mytempChart.setOption(option);

}

window.addEventListener('resize', mytempChart.resize);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72481843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档