Echart——自学笔记

数据可视化

  • 是关于数据视觉表现形式的科学技术研究
  • 可以借助图形化数据更好的分析数据
  • 增强数据的灵性

介绍

一个基于JavaScript的开源可视化图标库

特点

  1. 丰富的可视化类型
  2. 多数据格式无需转换
  3. 千万级别数据进行展示
  4. 移动端的优化
  5. 多渲染方案,跨平台使用
  6. 深度的交互方案
  7. 动态数据
  8. 绚丽的特效

使用流程(vue)

  1. 引入echarts

    import * as echarts from "echarts";
    
  2. 初始化图表

    let barChart = echarts.init(this.$refs.barChart);
    
  3. 设置echarts 数据及配置项

    barOption: {
            // title 设置图表的标题
            title: {
              ...
            },
    
            // tooltip 提示框组件
            tooltip: {
              ...
            },
    
            // legend 图例组件
            legend:{
              ...
            },
    
            // 设置轴
            xAxis: {
              ...
            },
            yAxis: {...},
    
            // 系列 配置图表的类型
            series: [
              ...
            ],
          },
    };
    
  4. 绘制图表

    barChart.setOption(this.barOption);
    

配置项

  • title:标题组件

    title: {
              text: "柱状图",
              link: "http://www.baidu.com",
              target: "self", // 当前页打开超链接
              textStyle: {
                color: "#2376b7",
              },
              top: "0px",
              // backgroundColor:'#2376b7',
              // borderColor:'#2376b7',
              // borderWidth:5,
              x: "center",
              /* subtext:'副标题',
              sublink:'http://www.baidu.com',
              subtextStyle:{
                color:'#fff'
              }, */
    },
    
  • tooltip:提示框组件

    tooltip: {
              // show:false  // 是否显示
              trigger: "axis", // 触发类型
              // 坐标轴指示器
              axisPointer:{
                // type:'shadow'
                type:'cross'
              },
              // showContent:false //显示内容
              // 悬浮层样式
              backgroundColor:"#8abcd1",
              borderColor:"#8abcd1",
              textStyle:{
                color:'#fff'
              },
              // 自定义提示框信息
              formatter(params){
                for(let i=0;i<params.length;i++){
                  return 'name:' + params[i].name + '-- price:' + params[i].data.value + '-- date:' + params[i].data.date
                }
              }
    },
    
  • legend:图例组件

    legend:{
              // show:true, // 设置是否显示图例
              x:'left',
              left:'10px',
              // icon:'circle',
              // 图例宽高
              itemWidth:20,
              itemHeight:20,
              textStyle:{
                color:"#2376b7"
              }
    },
    
  • xAxis、yAxis:设置轴

    xAxis: {
              data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
              type:'category' // 当前坐标轴类型 value 数据轴 category 类目轴
            },
    yAxis: {},
    
  • series:设置图表的类型

    series: [
              {
                name: "销量",
                type: "bar",  // 系列名
                data: [
                  {"value":'15',"date":'2020-1-1'},
                  {"value":'30',"date":'2020-2-1'},
                  {"value":'18',"date":'2020-2-23'},
                  {"value":'5',"date":'2020-3-2'},
                  {"value":'22',"date":'2020-4-15'},
                  {"value":'6',"date":'2020-5-1'},
                ],
              },
    ],
    
  • grid:直角坐标系内绘图网格

    grid:{
              left:'10%',
              top:'25%',
              bottom:'15%',
              // backgroundColor:'#333',
              // borderColor:'yellow'
    },
    
  • dataZoom:数据缩放

    // 数据区域
    dataZoom: [
        {
    	type: "slider",
    	xAxisIndex: 0,
    	filterMode: "none",
        },
        {
    	type: "slider",
    	yAxisIndex: 0,
    	filterMode: "none",
        },
    ],
    
  • dataset:数据排序

            // 数据排序
            dataset: [
              {
                // 数据分类
                dimensions: ["类别", "数量"],
                // 分类数据
                source: [
                  ["美食", 123],
                  ["日化", 85],
                  ["熟食", 253],
                  ["数码", 65],
                  ["蔬菜", 23],
                  ["杂项", 53],
                ],
              },
              {
                transform: {
                  type: "sort",
                  config: {
                    dimension: "数量",
                    order: "desc",
                  },
                },
              },
            ],
    
    // series
    series: [
              {
                name: "销量",
                type: "bar", // 系列名
                encode:{
                  x:'类别',
                  y:"数量"
                },
                datasetIndex:1,
    	  }
    ]
    

柱状图基本设置

series-bar
series: [
          {
            name: "销量",
            type: "bar", // 系列名
            data: [
              { value: "15", date: "2020-1-1" },
              { value: "30", date: "2020-2-1" },
              { value: "18", date: "2020-2-23" },
              { value: "5", date: "2020-3-2" },
              { value: "22", date: "2020-4-15" },
              { value: "6", date: "2020-5-1" },
            ],
            barWidth: 15, //设置宽度
            // 单独设置每个轴的颜色
            itemStyle: {
              normal: {
                color: function (params) {
                  let colorList = [
                    "#8076a3",
                    "#2474b5",
                    "#2c9678",
                    "#fbcd31",
                    "#f03f24",
                    "#ec4e8a",
                  ];
                  return colorList[params.dataIndex];
                },
              },
            },
            // 最大值、最小值
            markPoint: {
              symbolSize: 40,
              label:{
                fontSize:'12px',
                fontWeight:'bolder',
              },
              itemStyle:{
                color:'#22a2c3'
              },
              data: [
                // 标注的数据数组,每一项都是一个对象
                {
                  type: "max",
                  name: "最大值",
                },
                {
                  type: "min",
                  name: "最小值",
                },
              ],
            },
            // 图表的标线
            markLine: {
              data: [
                {
                  type: "average", //平均值
                  name: "平均值",
                },
              ],
            },
          },
],

饼图基本设置

series-pie
series: [
          {
            name: "Access From",
            type: "pie",
            // 饼图的半径
            radius: ["42%", "60%"],
            avoidLabelOverlap: false,
            // 设置环装文本标签
            label: {
              show: false,
              position: "center",
            },
            // 是否设置成南丁格尔
            roseType: "area",
            itemStyle: {
              color: "#2376b7",
              shadowBlur: 200,
              shadowColor: "rgba(0,0,0,0.5)",
            },
            emphasis: {
              label: {
                show: true,
                fontSize: 24,
                // fontWeight: "bold",
              },
            },
            labelLine: {
              show: false,
            },
            data: [
              {
                value: 1048,
                name: "Search Engine",
                itemStyle: { normal: { color: "#8076a3" } },
              },
              {
                value: 735,
                name: "Direct",
                itemStyle: { normal: { color: "#2474b5" } },
              },
              {
                value: 580,
                name: "Email",
                itemStyle: { normal: { color: "#2c9678" } },
              },
              {
                value: 484,
                name: "Union Ads",
                itemStyle: { normal: { color: "#fbcd31" } },
              },
              {
                value: 300,
                name: "Video Ads",
                itemStyle: { normal: { color: "#f03f24" } },
              },
            ],
          },
],

折线图基本设置

series-line
series: [
          {
            data: [150, 230, 110, 218, 138, 247, 260],
            type: "line",
            // 开启平滑过渡
            smooth:true,
            areaStyle:{},
            markLine: {
              data: [
                {
                  type: "average", //平均值
                  name: "平均值",
                },
              ],
            },
            markPoint: {
              symbolSize: 60,
              label:{
                fontSize:'14px',
                fontWeight:'bolder',
              },
              itemStyle:{
                color:'#2376b7'
              },
              data: [
                // 标注的数据数组,每一项都是一个对象
                {
                  type: "max",
                  name: "最大值",
                },
                {
                  type: "min",
                  name: "最小值",
                },
              ],
            },
          },
],

散点图基本设置

series-scatter
series: [
          {
            type: "scatter",
            symbolSize: 15,
            itemStyle: {
              color: {
                type: "linear",
                x: 0,
                y: 0,
                x2: 1,
                y2: 0,
                colorStops: [
                  {
                    offset: 0,
                    color: "#f1c4cd",
                  },
                  {
                    offset: 1,
                    color: "#ef3473",
                  },
                ],
              },
              emphasis:{
                itemStyle:{
                    borderColor:"#ef3473",
                    borderWidth:30
                }
              }
            },
            data: [
              [10.0, 8.04],
              [8.07, 6.95],
              [13.0, 7.58],
              [9.05, 8.81],
              [11.0, 8.33],
              [14.0, 7.66],
              [13.4, 6.81],
              [10.0, 6.33],
              [14.0, 8.96],
              [12.5, 6.82],
              [9.15, 7.2],
              [11.5, 7.2],
              [3.03, 4.23],
              [12.2, 7.83],
              [2.02, 4.47],
              [1.05, 3.33],
              [4.05, 4.96],
              [6.03, 7.24],
              [12.0, 6.26],
              [12.0, 8.84],
              [7.08, 5.82],
              [5.02, 5.68],
            ],
          },
],

K线图基本设置

series-candlestick
KLineOption: {
        title: {
          text: "基础K线图",
          textStyle: {
            color: "#ef3473",
          },
          left: "2.5%",
        },
        tooltip: {},
        xAxis: {
          data: ["2017-10-24", "2017-10-25", "2017-10-26", "2017-10-27"],
        },
        yAxis: {},
        series: [
          {
            type: "candlestick",
            data: [
              [20, 34, 10, 38],
              [40, 35, 30, 50],
              [31, 38, 33, 44],
              [38, 15, 5, 42],
            ],
          },
        ],
},

雷达图基本设置

series-radar
radar: {
          // shape: 'circle',
          radius:'50%',
          indicator: [
            { name: "Sales", max: 6500 },
            { name: "Administration", max: 16000 },
            { name: "Information Technology", max: 30000 },
            { name: "Customer Support", max: 38000 },
            { name: "Development", max: 52000 },
            { name: "Marketing", max: 25000 },
          ],
        },
        series: [
          {
            name: "Budget vs spending",
            type: "radar",
            data: [
              {
                value: [4200, 3000, 20000, 35000, 50000, 18000],
                name: "Allocated Budget",
              },
              {
                value: [5000, 14000, 28000, 26000, 42000, 21000],
                name: "Actual Spending",
              },
            ],
          },
],

漏斗图基本设置

series-funnel
series: [
          {
            name: "Funnel",
            type: "funnel",
            left: "10%",
            top: 60,
            bottom: 25,
            width: "80%",
            min: 0,
            max: 100,
            minSize: "0%",
            maxSize: "100%",
            sort: "descending", // 降序排序
            // sort: "ascending", // 升序排序
            // sort: "none", // 无排序
            gap: 2,
            label: {
              show: true,
              position: "inside",
              color:'#fff'
            },
            labelLine: {
              length: 10,
              lineStyle: {
                width: 1,
                type: "solid",
              },
            },
            itemStyle: {
              borderColor: "#fff",
              borderWidth: 1,
            },
            emphasis: {
              label: {
                fontSize: 20,
              },
            },
            data: [
              { value: 60, name: "Visit" },
              { value: 40, name: "Inquiry" },
              { value: 20, name: "Order" },
              { value: 80, name: "Click" },
              { value: 100, name: "Show" },
            ],
          },
],

仪表盘基本设置

series-gauge
series: [
          {
            name: "Pressure",
            type: "gauge",
            detail: {
              formatter: "{value}",
              valueAnimation:true // 动画
            },
            progress:{
                show:true
            },
            data: [
              {
                value: 50,
                name: "SCORE",
              },
            ],
          },
],

关系图基本设置

series-graph
// 关系图的节点数据
      list: [
        {
          id: "1",
          name: "唐僧",
          symbolSize: 50,
        },
        {
          id: "2",
          name: "孙悟空",
          symbolSize: 50,
        },
        {
          id: "3",
          name: "猪八戒",
          symbolSize: 50,
        },
        {
          id: "4",
          name: "沙和尚",
          symbolSize: 50,
        },
        {
          id: "5",
          name: "白龙马",
          symbolSize: 50,
        },
      ],
      // 关系数据
      relationShips: [
        {
          source: "1", //  边的节点名称
          target: "2", //  目标节点名称
          relation: {
            name: "师徒",
            id:'1'
          },
        },
        {
          source: "1", //  边的节点名称
          target: "2", //  目标节点名称
          relation: {
            name: "师徒",
            id:'1'
          },
        },
        {
          source: "1", //  边的节点名称
          target: "3", //  目标节点名称
          relation: {
            name: "师徒",
            id:'1'
          },
        },
        {
          source: "1", //  边的节点名称
          target: "4", //  目标节点名称
          relation: {
            name: "师徒",
            id:'1'
          },
        },
        {
          source: "1", //  边的节点名称
          target: "5", //  目标节点名称
          relation: {
            name: "师徒",
            id:'1'
          },
        },
        {
          source: "2", //  边的节点名称
          target: "3", //  目标节点名称
          relation: {
            name: "师兄弟",
            id:'2'
          },
        },
        {
          source: "2", //  边的节点名称
          target: "4", //  目标节点名称
          relation: {
            name: "师兄弟",
            id:'2'
          },
        },
        {
          source: "2", //  边的节点名称
          target: "5", //  目标节点名称
          relation: {
            name: "师兄弟",
            id:'2'
          },
        },
        {
          source: "3", //  边的节点名称
          target: "4", //  目标节点名称
          relation: {
            name: "师兄弟",
            id:'3'
          },
        },
      ],
      graphOption: {
        title: {
          text: "基础关系图",
          textStyle: {
            color: "#ef3473",
          },
          left: "2.5%",
        },
        series: [
          {
            type: "graph",
            data: "",
            layout: "force",
            itemStyle: {
              color: "#ef3473",
            },
            label: {
              show: true,
            },
            force:{
              repulsion:240,
              gravity:0.01,
              edgeLength:200
            },
            links:'',
            edgeLabel:{
              show:true,
              position:'middle',
              formatter:(params) => {
                return params.data.relation.name
              }
            }
          },
        ],
      },

树形图基本设置

series-tree
series: [
          {
            type: "tree",
            orient: "TB", // 设置布局方向
            left: "20%",
            data: [
              {
                // 最外层的数据就是数据的根节点
                name: "根节点",
                children: [
                  {
                    name: "层级2",
                    children: [
                      {
                        name: "层级3-1",
                        children: [
                          { name: "数据1", value: 1234 },
                          { name: "数据2", value: 2345 },
                          { name: "数据3", value: 3456 },
                          { name: "数据4", value: 4567 },
                        ],
                      },
                      {
                        name: "层级3-2",
                        children: [
                          { name: "数据1", value: 1234 },
                          { name: "数据2", value: 2345 },
                          { name: "数据3", value: 3456 },
                          { name: "数据4", value: 4567 },
                        ],
                      },
                    ],
                  },
                ],
              },
            ],
            symbolSize: 35,
            label: {
              rotate: 90,
              position: "left",
              verticalAlign: "middle",
              align: "center",
              fontSize: 14,
            },
            leaves: {
              label: {
                position: "right",
                verticalAlign: "middle",
                align: "center",
              },
            },
            emphasis: {
              focus: "descendant",
            },
          },
        ],

主题

内置主题 light/dark

echarts.init(this.$refs.barChart,'dark');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Morgan_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值