首页 > 其他分享 >echarts-dataset数据源配置项

echarts-dataset数据源配置项

时间:2022-08-29 14:58:15浏览次数:70  
标签:obj name 数据源 value dataset 维度 type echarts

 如下效果图:

 

 

 代码入下:

  let box4 = document.querySelector('.box4')
        let myCharts3 = echarts.init(box4)
        myCharts3.setOption({
            dataset:{
                // 二维数组存放数据
                source:[
                //     0    1  2  3  4  5    六个维度
                    ['衣服',22,15,36,35,18],
                    ['食品',60,39,50,15,22],
                    ['生活用品',60,52,36,15,36],
                    ['家具',45,32,8,25,46],
                    ['厨具',35,42,26,5,16],
                    ['裤子',10,22,46,42,56]
                ]
            },
            title: {
                text: "dataset数据集",
                subtext: '折线、柱状、饼图',
                left: "center"
            },
            xAxis: {
                data: ['衣服', '食品', '生活用品', '家具', '厨具', '裤子']
            },
            yAxis: {
                // 设置是否显示y轴线
                axisLine: {
                    show: true
                },
                // 设置是否显示y轴刻度
                axisTick: {
                    show: true
                }
            },
            series: [
                {
                    type:"line",
                    // 选择使用哪一个维度
                    encode:{
                        // 使用1维度映射到y轴上
                        y:2
                    }
                },
                {
                    type:"bar",
                    encode:{
                        // 使用1维度映射到y轴上
                        y:4
                    }
                },
                {
                    type:"pie",
                    width:"260px",
                    height:"260px",
                    top:"-60px",
                    left:"500px",
                    radius:["0%","40%"],
                    encode:{
                        // 饼图旁边的文字
                        // 使用0维度映射
                        itemName:0,
                        // 使用4维度映射
                        value:4
                    }
                }
            ]
        })

  实例中 dataset 用 source 配置项接收一个二维数组,series 用 encode 来与x,y轴映射数据

下面介绍几中 dataset 的组织形式,还有 series 的映射的方式

  1.   按行的key --value 形式
dataset: {
    source: [
        { value: 1048, name: 'Search Engine' },
        { value: 735, name: 'Direct' },
        { value: 580, name: 'Email' },
    ]
},
series: [
    {
      type: 'pie',
      encode: {
        itemName: 'name',
        value: 'value'
      }
    }
]

 

  1.        按列的key --value 形式
dataset: {
    source: {
      name: ['Search Engine', 'Direct', 'Email'],
      value:[1048, 735, 580],
    }
},
series: [
    {
      type: 'pie',
      encode: {
        itemName: 'name',
        value: 'value'
      }
    }
]

 

  1.        二维数组(如实例)
//按列取数的形式
dataset: {
    source: [
      ['name', 'value'],
      ['Search Engine', 1048],
      ['Direct', 735,],
      ['Email',580]
    ],
},
series: [
    {
      type: 'pie',
      encode: {
        itemName: 'name',
        value: 'value'
      }
    }
]
 
//按行取数的形式
dataset: {
    source: [
      ['name','Search Engine','Direct','Email'],
      ['value',1048,735,580]
    ],
},
series: [
    {
      type: 'pie',
      seriesLayoutBy: 'row',//默认为column,即默认是取第一行作为维度名信息,需要改成列
      encode: {
        itemName: 'name',
        value: 'value'
      }
    }
]

 

  1.        利用dimensions
//按列取数的形式
dataset: {
    source: [
      ['Search Engine', 1048],
      ['Direct', 735,],
      ['Email',580]
    ],
    dimensions: ['name', 'value'],
},
series: [
    {
      type: 'pie',
      encode: {
        itemName: 'name',
        value: 'value'
      }
    }
]

处理Axios清求到的数据时就得将其组织成以上三种形式中获得任意一种

处理方法如下

  指标的数据的组织形式就是数据立方体的新式后端的DTO如下

/**
 * 统计通用dto
 */
@Data
@ApiModel(description = "统计通用dto")
public class StatisticsDTO {

    @ApiModelProperty(value = "统计数据")
    List<Map<String, Object>> statistics;

    @ApiModelProperty(value = "维度取值")
    Map<String, List<String>> dimensionValues;

    @ApiModelProperty(value = "维度分层统计")
    Map<String, List<Map<String, Object>>> hierarchyDimensionData;
}

Responses 数据如下格式

  
{
  "code": 0,
  "data": {
    "dimensionValues": {
      "additionalProp1": [
        "string"
      ],
      "additionalProp2": [
        "string"
      ],
      "additionalProp3": [
        "string"
      ]
    },
    "hierarchyDimensionData": {
      "additionalProp1": [
        {
          "additionalProp1": {},
          "additionalProp2": {},
          "additionalProp3": {}
        }
      ],
      "additionalProp2": [
        {
          "additionalProp1": {},
          "additionalProp2": {},
          "additionalProp3": {}
        }
      ],
      "additionalProp3": [
        {
          "additionalProp1": {},
          "additionalProp2": {},
          "additionalProp3": {}
        }
      ]
    },
    "statistics": [
      {
        "additionalProp1": {},
        "additionalProp2": {},
        "additionalProp3": {}
      }
    ]
  },
  "msg": "string"
}

拿到的数据需要过滤,或者排序

//   *就是所有,不加限制条件
//    所有维度都等于* ,则就是就全部的指标和或计数或最值
 const filtersource = data.data.statistics.filter(
          (obj) =>
            obj.CaseType != '*' &&
            obj.Datasource != '*' &&
            obj.MaterialType != '*' &&
            obj.MaterialGrade != '*'
        );
//排序
    data.statistics.sort((item1, item2) => {
      if (item1.Field > item2.Field) {
        return 1;
      } else if (item1.Field < item2.Field) {
        return -1;
      }
      return 0;
    });

将过滤的数据组织成上述的三种形式

//二维数组形式 

const sourceLists: Recordable[] = [];
//二维数组第一项   根据某一维度放x轴
//往后项     根据第二维度放legend图例
 //[维度x, 图例, 图例,];
 //[维度x, 图例, 图例, ;
    for (let entity of data.dimensionValues.AssessmentDate) {
      var sourceList: Recordable[] = [0, 0, 0, 0, 0, 0];
      sourceList.splice(0, 1, entity);
      for (let obj of filtersource) {
        if (obj.AssessmentDate == entity) {
          switch (obj.Field) {
            case '海一采油管理区':
              sourceList.splice(1, 1, obj.count);
              break;
            case '海二采油管理区':
              sourceList.splice(2, 1, obj.count);
              break;
            case '海三采油管理区':
              sourceList.splice(3, 1, obj.count);
              break;
            case '海四采油管理区':
              sourceList.splice(4, 1, obj.count);
              break;
            case '集输大队':
              sourceList.splice(5, 1, obj.count);
              break;
            default:
              console.log('Unknown filter');
              break;
          }
        }
      }
      sourceLists.push(sourceList);
    

到此在series映射绑定(name映射到对应的图例)

 series: [
        {
          name: '海一采油管理区',
          type: 'line',
          smooth: true,
          barWidth: '10%',
          itemStyle: {
            color: '#5ab1ef',
          },
          areaStyle: {
            normal: {
              areaStyle: {
                normal: {
                  color: (0, 0, 0, 1),
                },
              },
            },
          },
        },
        {
          name: '海二采油管理区',
          type: 'line',
          smooth: true,
          barWidth: '10%',
          itemStyle: {
            normal: {
              barBorderRadius: 2,
              color: '#4daaf8',
            },
          },
        },
        {
          name: '海三采油管理区',
          type: 'line',
          smooth: true,
          barWidth: '10%',
          itemStyle: {
            normal: {
              barBorderRadius: 2,
              color: '#2cde87',
            },
          },
          areaStyle: {
            normal: {
              areaStyle: {
                normal: {
                  color: (0, 0, 0, 1),
                },
              },
            },
          },
        },
        {
          name: '海四采油管理区',
          type: 'line',
          smooth: true,
          barWidth: '10%',
          itemStyle: {
            normal: {
              barBorderRadius: 2,
              color: '#ffa43a',
            },
          },
          areaStyle: {
            normal: {
              color: (0, 0, 0, 1),
            },
          },
        },
        {
          name: '集输大队',
          type: 'line',
          smooth: true,
          barWidth: '10%',
          itemStyle: {
            normal: {
              barBorderRadius: 2,
              color: '#ffce3a',
            },
          },
          areaStyle: {
            normal: {
              color: (0, 0, 0, 1),
            },
          },
        },
      ],

注意要将数据请求放到页面加载时运行的钩子函数中

      //页面加载时运行
      onMounted(async () => {
        await loadData();
        // emit('register', { reloadData });
      });

 

标签:obj,name,数据源,value,dataset,维度,type,echarts
From: https://www.cnblogs.com/origin-zy/p/16635934.html

相关文章

  • echarts-散点图-vue3-内阴影
      以上为效果图但是有一个问题是,一开始需要定义位置和颜色数组,当数据量过多的时候会重叠而且要提前声明很多数据后面我决定用关系图来做了,先放上散点图代码供参考f......
  • Pytorch——Dataset&Dataloader
    在利用Pytorch进行深度学习的训练时需要将数据进行打包,这就是Dataset与Dataloader的作用。 Dataset将数据进行包装,Dataloader迭代包装好的数据并输出每次训练所......
  • 3.Linux更新数据源
    在一个没有安装vim等命令的Linux环境中,没办法更新数据源,没办法软件的安装等的解决方案:编辑数据源vi/etc/apt/sources.list删除全部内容并修改为debhttp://mirrors......
  • Echarts与ajax数据的动态交互
    初学Echarts,Echarts的官网示例中配置项的数据需要用到js数组来传递数据,所以当我们从后端查询到数据后,往往需要通过ajax来进行数据交互。这是官方示例的配置项。<script......
  • centeros 修改yum数据源
     1.修改vim/etc/yum.repos.d/CentOS-Base.repo文件将mirrorlist配置注释掉,并将baseurl修改为阿里云镜像地址[BaseOS]name=CentOS-$releasever-Base#mirrorlist=ht......
  • (WebFlux)003、多数据源R2dbc事务失效分析
    一、背景最近项目持续改造,然后把SpringMVC换成了SpringWebflux,然后把Mybatis换成了R2dbc。中间没有遇到什么问题,一切都那么的美滋滋,直到最近一个新需求的出现,打破了往日的......
  • NetCore 入门 (四) : 配置数据源
    1.介绍一般来说,定义一种配置源,需要经过如下三个步骤:[必须]实现IConfigurationSource接口[必须]实现IConfigurationProvider接口[可选]在IConfigurationBuilder接......
  • Springboot+MybatisPlus多数据源比对数据
    欢迎关注博主公众号「Java大师」,专注于分享Java领域干货文章https://www.javaman.cn/基于不同的数据源进行数据比对,比较两个数据库的表之间数据的总量,以及处理后的总......
  • SparkSQL支持的数据源
    1.SparkSQL支持的数据源HiveScala内存中数据--集合支持从RDD读取数据作SQL操作支持从外部存储文件读取数据json,csv,普通结构文本文件支持从关系型数据库读取数据处理......
  • RDD,DataFrame,DataSet
    RDD:以Person为类型参数,但是Spark框架本身不了解Person类的内部结构。DataFrame:DataFrame每一行的类型固定为Row,每一列的值没法直接访问,只有通过解析才能获取各个......