美文网首页
BizCharts 双柱图 加折线统计图

BizCharts 双柱图 加折线统计图

作者: 王善良_ | 来源:发表于2019-12-19 16:04 被阅读0次

    双柱图,需要对数据进行处理


    image.png

    要是想竖着的,就把 <Coord transpose scale={[1, -1]} /> 删掉就行,

    这个是双柱图的数据,折线图的数据也很简单,按照每个横坐标加一个字段对应值就好了
    比如说
    {
    label:"Tusday",
    series1:1800,
    series2:1200,
    series3_line:4000
    }

    随便加个属性叫series3_line,那么按照数据上的每个横坐标上都加个,即周一至周五都要加

    然后加个

    const scale = {
         series3_line: {
            min: 0,
            type: 'linear',
          },
         series2: {
            min: 0,
          },
        series1: {
            min: 0,
          },
        };
    

    针对每一个字段,都设置个min:0,这样子 纵坐标就是从0开始的,这个scale ,加到最外面的Chart组件上就行

    现在双柱图有了,再加个折线图

     <Geom
                type="path"
                position="label*series3_line"
                size={2}
                color="#fff" //影响tooltip上的marker颜色
                style={{
                  stroke: '#fff',
                  lineWidth: 1,
                }}
        />
    

    这里我选择type=path,因为type=line的话,有时候好像数据不太好的时候,就变成虚线了,

    加了个折线图,
    但是Legend(图例)上并没有我们折线图,
    怎么加都加不上去

    只能手动加了
    找了一位大佬的方案
    https://www.cnblogs.com/hill-foryou/p/10571386.html

    image.png

    custom一定要加上,这样子才允许items自定义,
    自定义了后,又有问题了,点击图例,对应的图表没反应

    那么又得给Legend 手动加上onClick事件,这里我参照着大佬的代码写

    image.png

    图上series_line3 打错了,应该是 series3_line,反正对应的就是那个数据

    onClick={ev => {
                  const item = ev.item;
                  const value = item.value;
                  const checked = ev.checked;
                  const geoms = this.chartIns.getAllGeoms();
                  console.log('geoms', geoms);
                  for (let i = 0; i < geoms.length; i++) {
                    const geom = geoms[i];
                    if (geom.getYScale().field === value && value === 'series3_line') {
                      if (checked) {
                        geom.show();
                      } else {
                        geom.hide();
                      }
                    } else if (
                      geom.getYScale().field === 'value' &&
                      value !== 'series3_line'
                    ) {
                      geom.getShapes().map(shape => {
                        if (shape._cfg.origin._origin.type == value) {
                          shape._cfg.visible = !shape._cfg.visible;
                        }
                        shape.get('canvas').draw();
                        return shape;
                      });
                    }
      
                    // const g_shapes = geom.get('labelContainer');
                    // debugger;   
                    // let labels = g_shapes._cfg.labelsGroup._cfg.children;
                    // labels.map(label => {
                    //   if (checked) {
                    //     if (label._id.includes(value)) {
                    //       label._cfg.visible = true;
                    //     }
                    //   } else {
                    //     if (label._id.includes(value)) {
                    //       label._cfg.visible = false;
                    //     }
                    //   }
                    // });
                  }
                }}
    

    相关文章

      网友评论

          本文标题:BizCharts 双柱图 加折线统计图

          本文链接:https://www.haomeiwen.com/subject/ymomnctx.html