使用echarts-for-react 绘制折线图 报错:`series.type should be specified `

解决办法:

在动态获取值的函数前面加 访问器属性  get ,去获取对象的属性

@inject(‘commonStore‘, ‘reportUIStore‘)
@observer
class LineEcharts extends React.Component<Props> {
  drawChart = () => {
    const { nameArr } = this.props
    const option = {
      tooltip: {
        trigger: ‘axis‘,
        axisPointer: {
          lineStyle: {
            color: ‘rgba(24,144,255,0.2)‘,
          },
        },
        formatter: (params: Params) => {
          let tip = ``
          if (params.length) {
            tip += params[0].axisValue + ‘<br/>‘
          }
          if (params.length && params.length === 1) {
            tip +=
              params[0].marker +
              params[0].seriesName +
              ‘ :‘ +
              params[0].data +
              ‘<br>‘
          }
          if (params.length > 1) {
            let num = params[0].data - params[1].data
            let rate = ((num / params[1].data) * 100).toFixed(2)
            if (num === 0) {
              rate = `0%`
            } else {
              rate = `${rate}%`
            }
            for (let i = 0; i < params.length; i++) {
              if (nameArr && nameArr.length) {
                params[i].seriesName = nameArr[i]
                tip +=
                  params[i].marker +
                  params[i].seriesName +
                  ‘ :‘ +
                  params[i].data +
                  ‘<br>‘
              }
            }
            tip += `变化:${num}(${rate})`
          }
          return tip
        },
      },
      grid: {
        left: ‘3%‘,
        right: ‘6%‘,
        bottom: ‘10%‘,
        containLabel: true,
      },
      xAxis: {
        axisLabel: {
          textStyle: {
            color: ‘#999‘,
          },
        },
        type: ‘category‘,
        boundaryGap: true,
        data: range(24).map(hour => `${hour}:00`),
        axisTick: {
          show: false,
        },
        axisLine: {
          show: true,
          lineStyle: {
            color: ‘#ccc‘,
            width: 1,
          },
        },
      },
      yAxis: [
        {
          type: ‘value‘,
          name: ‘‘,
          min: 0,
          max: 12000,
          interval: 3000,
          axisLabel: {
            formatter: ‘{value}‘,
          },
          axisTick: {
            show: false,
          },
          axisLine: {
            show: true,
            lineStyle: {
              color: ‘#ccc‘,
              width: 1,
            },
          },
          splitLine: {
            show: true,
            lineStyle: {
              color: ‘#eee‘,
            },
          },
        },
        {
          type: ‘value‘,
          name: ‘‘,
          min: 0,
          max: 150,
          interval: 50,
          axisLabel: {
            formatter: ‘{value}‘,
          },
          axisTick: {
            show: false,
          },
          axisLine: {
            show: true,
            lineStyle: {
              color: ‘#ccc‘,
              width: 1,
            },
          },
          splitLine: {
            show: true,
            lineStyle: {
              color: ‘#eee‘,
            },
          },
        },
      ],
    series: this.handlData,
    }
    return option
  }

// 注意这儿: 添加了get 错误消失了
 get handlData() {
    let series: Series[] = []
    let { dataArr, nameArr, colors } = this.props
    dataArr.map((itm, i) => {
      let serie = {
        name: nameArr[i],
        type: ‘line‘,
        symbol: ‘circle‘,
        color: colors[i],
        symbolSize: 4,
        itemStyle: {
          normal: {
            lineStyle: {
              width: 2,
              color: colors[i],
            },
          },
        },
        data: dataArr[i],
      }
      series.push(serie)
    })
    return series
  }
  render() {
    return (
      <div>
        <Loading loading={false}>
            <ReactEcharts option={this.drawChart()} />
       </Loading>
      </div>
    )
  }
}

export default LineEcharts

export interface Props {
  reportUIStore?: ReportUIStore
  dataArr: number[][]
  nameArr: string[]
  colors: string[]
}

export interface Params {
  param: ParamsSingle[]
  length: number
}

export interface ParamsSingle {
  seriesName: string
  // 数据名,类目名
  name: string
  // 传入的原始数据项
  data: Object
  // 数据图形的颜色
  color: string
  marker: string
}

export interface Series {
    name: string,
    type: string,
    symbol: string,
    color: string,
    symbolSize: number,
    itemStyle: {
        normal: {
        lineStyle: {
            width: number,
            color: string
        }
        }
    },
    data: number[],
}

原文地址:https://www.cnblogs.com/aloehui/p/9446429.html

时间: 2024-08-30 17:08:22

使用echarts-for-react 绘制折线图 报错:`series.type should be specified `的相关文章

Python中使用matplotlib 如何绘制折线图?

本文和大家分享的主要是python开发中matplotlib 绘制折线图相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. matplotlib 1.安装matplotlib ① linux系统安装 # 安装matplotlib模块 $ sudo apt-get install python3-matplotlib# 如果是python2.7 执行如下命令 $ sudo apt-get install python-matplotlib# 如果你安装较新的Python,安装模块一乐

用canvas绘制折线图

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>用canvas绘制折线图</title> 6 </head> 7 <body> 8 <canvas id="cv"></canvas> 9 </body> 1

Android自定义控件 -Canvas绘制折线图(实现动态报表效果)

有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了很多插件,但是很多时候我们需要根据具体项目自定义这些图表,这一篇文章我们一起来看看如何在Android中使用Canvas绘制折线图.先看看绘制的效果: 代码: public class MyView extends View { //坐标轴原点的位置 private int xPoint=60; private int yPoint=260; //刻度长度 private int xScale=8;  //8个单位构

使用andbase开发框架实现绘制折线图

在Android中,当有绘制折线图的需求时,大多数人使用的AChartEngine,来进行折线图的绘制.AChartEngine图表引擎确实可以实现折线图的功能,除此之外,我们还可以使用andbase开发框架里面的图表模块,实现图标的绘制.前面文章介绍了使用andbase开发框架实现侧滑栏效果,今天,我们学习如何实现折线的绘制. 首先,我们还是看一下效果图 我们模拟的是一家公司12个月中,两项不同业务的销售额变化,可以看到,效果还是非常不错的. 下面,我们开始介绍如何使用andbase实现这个效

Morris.js和flot绘制折线图的比较

[文章摘要] 最近用开源的AdminLTE做框架感觉效果特别好,其针对图表库Morris.js和flot都提供了不错的支持,也都提供了这两者的例子.不过Morris.js是基于Raphael.js来的,也就是其使用SVG和VML来绘制图形,而flot则是使用Canvas进行绘制,在绘制效率和浏览器兼容性等方面会有出入,同时两者需要的数据格式也不相同.本文中对两者的使用和性能进行了比较. [文章索引] Morris.js的使用 flot的使用 性能比较 [一.Morris.js的使用] Morri

canvas绘制折线图

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <canvas id="ca" width="300" height="300"></canvas

Android自定义组件系列【9】——Canvas绘制折线图

有时候我们在项目中会遇到使用折线图等图形,Android的开源项目中为我们提供了很多插件,但是很多时候我们需要根据具体项目自定义这些图表,这一篇文章我们一起来看看如何在Android中使用Canvas绘制折线图.先看看绘制的效果: 实现原理很简单,我就直接给出代码: package com.example.testcanvasdraw; import java.util.ArrayList; import java.util.List; import java.util.Random; impo

JFreeChart绘制折线图实例

JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. 1 package com.mvc.controller; 2 3 import java.util.HashMap; 4 import java.util.List; 5 import java.util.Map; 6 import javax.servlet.http.HttpServletRequest; 7

[转]用Matplotlib绘制 折线图 散点图 柱状图 圆饼图

Matplotlib是一个Python工具箱,用于科学计算的数据可视化.借助它,Python可以绘制如Matlab和Octave多种多样的数据图形. 安装 Matplotlib并不是Python的默认组件,需要额外安装. 官方下载地址 http://matplotlib.org/downloads.html 必须下载与自己的Python版本,操作系统类型对应的安装包.如Windows 64位+Python3.3,应该下载matplotlib-1.3.1.win-amd64-py3.3.exe 第