首页 > 其他分享 >Vcharts 条形堆积图右侧展示总数值

Vcharts 条形堆积图右侧展示总数值

时间:2024-03-14 10:46:56浏览次数:19  
标签:par 条形 show color 右侧 Vcharts fontSize data 条形图

需要实现效果:

思路:Vcharts图表属性extend只能写现有的数据样式,那么我是不是可以在data位置给extend的series自定义追加类型,获取接口数据的长度通过长度给自定义的类型,追加对应长度的data数组,在设置新增的类型样式;

<ve-bar :data="ranKingBarData" :extend="ranKingBarExtend" :legend-visible="false" height="100%"width="100%""></ve-bar>




ranKingBarData: {}, //条形图数据
        ranKingBarExtend: { //条形图extend
          legend: {
            right: '2%',
            bottom: '15%',
            orient: "vertical", //图例垂直展示
            itemWidth: 10,
            itemHeight: 10
          },
          grid: {
            top: '5%',
            bottom: '2%',
            left: '4%',
            right: '9%'
          },
          tooltip: {
            trigger: 'axis',
            formatter: function(par) {
              var relVal = par[0].axisValue + '<br/>';
              for (var i = 0; i < par.length; i++) {
                var o = par[i];
                relVal += o.seriesName + ':' + (o.value == null ? '--' : o.value + '') + '座'+
                ('<br/>');
              }
              return relVal;
            },

            textStyle: {
              align: 'left'
            },
            confine: true
          },
          xAxis: {
            name:'MW',
            // nameTextStyle: {
            //   color: '#FFFFFF',
            //   padding: [0, 0, -10, 0],
            // fontSize: 12
            // },
            axisLine: {
              show: true,
              lineStyle: {
                color: '#A2A2A2',
                fontSize: 12
              }
            },
            splitLine: {
              show: false
            },
            axisLabel: {
              // interval: 0,
              formatter: function(value, index) {
                return value.toString() + '';
              },
              textStyle: {
                fontSize: 12
              }
            }
          },
          yAxis: {
            nameTextStyle: {
              color: '#FFFFFF',
              padding: [0, 0, -10, 0],
            fontSize: 12
            },
            axisLine: {
              show: true,
              lineStyle: {
                color: '#A2A2A2'
              }
            },
            splitLine: {
              show: false
            },
            axisLabel: {
              textStyle: {
                fontSize: 12
              }
            }
          },
          stack:{},
          series: {
            type: 'bar',
            stack: "1",
            barMaxWidth: '40%'
          },
          'xAxis.1.show': false
        },


//获取条形图数据函数

 getRanKingBarData(url) {
        this.axios({
            method: "post",
            url: '/sgeri/Cn/Xnycndspm',
            data: {
              "dt":"2024-02-20"
            }
          })
          .then(res => {
            console.log(res)
            // 接口获取条形堆积图数组 --数据结构为正常的vcharts官网结构,在这里就不一一细写
            this.ranKingBarData = res.data;
            // 条形堆积图 在最右侧展示总数值
            var dataArray = []; //图表label总值数组
            let arra = []; //新增series的data数组
            let that = this;
            // 遍历接口获取的条形图数据
            that.ranKingBarData.rows.forEach((e,index)=>{ 
              // 重构数组 -接口获取的条形图数据对应新声明的变量数组下标,字面量为0
              arra[index] = 0;
            })
            // 给条形图的extend属性显示总值,追加series(举例:原数据为2条,那么下方就是2,因为是从0开始)
            this.ranKingBarExtend['series.2'] = ({
              type: 'bar',
              name: "总值",
              stack: "1",
              barMaxWidth: '40%',
              data: arra,
              label: {
                  show: true,
                  position: 'right',
                  color: '#fff',
                  fontSize: 12,
                  formatter: function(par){
                    // 循环遍历接口数组,累加获取总值
                      that.ranKingBarData.rows.forEach((e,index)=>{
                      if(e.地市 == par.name) { //通过label判断图表对应数组的数据,然后相加,得出总值结果
                        let data = (e.上月累计==null?0:e.上月累计) + (e.本月新增==null?0:e.本月新增);
                        let isTotal = (parseInt(data * 100) / 100).toFixed(0);
                        dataArray.push(data)
                      }
                    }) 
                    return dataArray[par.dataIndex] + " MW"
                  }
              },
              itemStyle: {
                color: 'transparent'
              }
            })
            console.log(this.ranKingBarExtend)
          })
          .catch(err => {
            console.log(err);
          });
      },

此代码在Vcharts是可以实现,echarts思路应该都差不多(暂时没有测试);

标签:par,条形,show,color,右侧,Vcharts,fontSize,data,条形图
From: https://www.cnblogs.com/yanshushu/p/18072313

相关文章

  • northwest uniapp: 顶部导航栏右侧添加uni-icons图标,并绑定点击事
    说明该配置按页面配置,无法全局配置使用方法引入uni-icons插件插件地址:点击此处跳转到uni-icons引入以后,会发现uni-modules中新增如下目录和文件:仅需要那个uniicons.ttf文件,不引入插件、单独把那个文件下载到本地也是可以的。复制uniicons.ttf文件到static目录下不知道......
  • matplotlib条形图
    matplotlib条形图假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据?frommatplotlibimportpyplotasplta=["WolfWarrior2","FastandFurious8","KungFuYoga","JourneytotheWest","Transformers5......
  • Python嵌套绘图并为条形图添加自定义标注
    论文绘图时经常需要多图嵌套,正好最近绘图用到了,记录一下使用Python实现多图嵌套的过程。首先,实现Seaborn分别绘制折线图和柱状图。'''绘制折线图'''importseabornassnsimportmatplotlib.pyplotaspltimportwarningswarnings.filterwarnings("ignore","use_inf_as_n......
  • SharePoint Online 列表启用条形码
    前言我们经常会在项目中使用条形码,尤其是和移动设备相关的系统上,而SharePointOnline列表默认就支持这样的功能。正文1.我们进入列表设置,找到“Informationmanagementpolicysettings”,如下图:2.点击Item,如下图:3.勾选启用条形码,点击保存,如下图:......
  • 问题:主人一般都是面门而坐,主人的右侧为上。
    问题:主人一般都是面门而坐,主人的右侧为上。参考答案如图所示......
  • 问题:梯形图从最左边母线开始,触点不能在线圈右侧
    问题:梯形图从最左边母线开始,触点不能在线圈右侧A.正确B.错误参考答案如图所示......
  • 如果是左树右表,修改成功后,是只刷新当前列表,还是需要刷新右侧的树?
    在左树右表的场景中,用户修改成功后,数据刷新策略取决于以下几个因素:数据关联性:如果右侧列表中的数据与左侧树形结构紧密相关,即修改了列表项可能影响到左侧树形结构(例如部门或组织架构中,修改一个用户的属性可能导致其所在部门信息变化),则应同步更新左侧的树。实时性需求:如果系......
  • 微信小程序之条形码和二维码
    整个示例目录:index.wxml代码: <view class="container page">  <view class="panel">    <view class="header">    </view>    <view class="barcode">      <view class="barnum">......
  • Python 生成二维码的几种方式、生成条形码
    一:#生成地维码importqrcodeimportmatplotlib.pyplotaspltfrombarcode.writerimportImageWriter创建QRCode对象qr=qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=10,border=4)设置二维码的数据data="Hello,world!"......
  • Flutter 自定义一个右侧可滑动 左侧为按钮的组件
    Flutter自定义一个右侧可滑动左侧为按钮的组件vartopicList=["圈子话题1","圈子话题2","圈子话题3","圈子话题4-天气很好","圈子话题5","圈子话题6"];@overrideWidgetbuild(BuildContextcontext){returnSizedBox(height:40......