echarts实现柱形图的每个柱子不同颜色并带图例

这里写自定义目录标题

啊,最近工作一直在做图表,没有UI,自己瞎做,做出来一版给老大看,老大说不行,好,我改。第二版做出来后,老大说,你这个柱状图把他变成每个柱子颜色不一样,再加一个图例,可是我这只有一层数据,一个横坐标一个纵坐标就可以解决了,为什么让我加图例,我去看了看echarts官方,一层数据确实没有办法加图例,咋办啊,拆吧。

原图

讲真,原图没了,给看看差不多的例子吧
在这里插入图片描述
就这样吧
然后新的图长这样(不知道算不算泄露公司机密,我马赛克一下吧)
在这里插入图片描述
思路就是把一层数据的data数组变成一层数据的多个data数组,一个数组只有一个数据,不过这样要牺牲横坐标,横坐标就设置一个空数据或者其他你想使用的数据即可
代码奉上

var options =  {
    divideData(){
    	//数据什么的都是瞎编的,依据自己的情况就可以了
        return [{name:'aaa',value:100},{name:'bbb',value:200},{name:'bbb',value:200},{name:'bbb',value:200},{name:'bbb',value:200},{name:'bbb',value:200},{name:'bbb',value:200},{name:'bbb',value:200},{name:'bbb',value:200}].map((ele) =>{
          return {
            type: 'bar',
            name: ele['name'],
            //重点 data的设置,一次一个数据
            data: [ele['value']],
            label:{
              show:true,
              formatter: '{c}\n{a}',
              position:'top'
            }
          }
        })
      },
        title: {
          text: this.title,
          x:'center'
        },
        tooltip:{},
        xAxis:{
          data:[''],
        },
        yAxis:{
          type:'value',
          axisLabel: {
              textStyle: {
                  color: '#999'
              }
          }
        },
        dataZoom: [
          {
              type: 'inside'
          }
        ],
        legend: {
          top:20,
          left:100
        },
        series: this.divideData()
      } 
ECharts中,创建一个双向柱形图设置数据值在柱子里面,名称在柱子上方,可以通过配置series和tooltip来实现。以下是一个示例代码: ```html <!DOCTYPE html> <html style="height: 100%"> <head> <meta charset="UTF-8"> <title>ECharts</title> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> </head> <body style="height: 100%; margin: 0"> <div id="main" style="height: 100%"></div> <script> var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); var option; option = { tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, legend: {}, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: { type: 'value' }, yAxis: { type: 'category', data: ['A', 'B', 'C', 'D', 'E'] }, series: [ { name: '正向', type: 'bar', data: [120, 200, 150, 80, 70], label: { show: true, position: 'inside' } }, { name: '反向', type: 'bar', data: [-70, -80, -100, -50, -120], label: { show: true, position: 'inside' } } ] }; option && myChart.setOption(option); </script> </body> </html> ``` 在这个示例中,我们创建了一个双向柱形图,其中正向和反向的数据分别在不同的系列中设置。通过`label`属性,我们将数据值设置在柱子里面;通过`name`属性,我们将名称设置在图例中。 如果你想在柱子正上方显示名称,可以在`series`中的每个系列里添加`label`配置: ```javascript series: [ { name: '正向', type: 'bar', data: [120, 200, 150, 80, 70], label: { show: true, position: 'top' } }, { name: '反向', type: 'bar', data: [-70, -80, -100, -50, -120], label: { show: true, position: 'top' } } ] ``` 这样,数据值会显示在柱子正上方。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值