锋芒神话霜 2019-08-01 14:45 采纳率: 50%
浏览 640
已采纳

求教如何用echart做出如图所示的图表

要求做成这样的图片说明目前已经做到这样了图片说明,导入的是json格式的文件图片说明
,json里面那个catego'ries没有用到,但其他的都导入进来了,目前代码如下

echartmix: function(opts){
                 var option= {
                      title: {
                    text: '最近一年用户新增趋势'

                },
                tooltip: {
                    trigger: 'axis'
                },
                legend: {
                    type: scroll,
                    data:['月环比增长率','用户月新增量']
                },
                toolbox: {
                    show: false,
                    feature: {
                        magicType: {show: true, type: ['stack', 'tiled']},
                        saveAsImage: {show: true}
                    }
                },
                xAxis: {
                    type: 'category',
                    splitLine: {
                        show: false
                    },
                    data: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']
                },
                yAxis: [{
                         type: 'value',
                         name: '用户量',
                         axisTick: {
                            show: false
                         }
                           },
                           {
                            type: 'value',
                            name: '月环比增长率',

                            axisLabel: {
                                formatter: '{value} %'
                            },
                            axisTick: {
                            show: false
                            }
                            }
                        ],
                series: [{
                    name: '月环比增长率',
                    type: '',
                    data: [],
                    itemStyle: {
                        normal: {
                            color: '#66b7ef'
                        }
                    }
                },
                {
                    name: '用户月新增量',
                    type: '',
                    data: [],
                    itemStyle: {
                        normal: {
                            lineStyle: {
                            color: '#66b7ef'
                          }
                        }
                    }
                }]
               };
                $.each(opts.columnSeries, function(index, item){
                    item.type = 'bar';
                    option.series.push(item)
                });
                $.each(opts.splineSeries, function(index, item){
                    item.type = 'line';
                    item.smooth = true;

                    option.series.push(item)
                });
                return option;
            }

主要难点一是第二个y轴,刻度要从-100%到200%,关键是高度要和那个柱状的月环比增长率对应,就是json里的columnseries,二是整个图表最外侧的那个边框如何删掉,三是上面那个蓝色和橙色的legend,我点蓝色的有反应,legend变灰后下面的柱状消失,但是红色那个点了只是单纯他自己变灰,图表本身没任何变化,是不是我上面legend写的有问题,我真的是被难住了,跪求大佬帮助

  • 写回答

1条回答 默认 最新

  • xSeeker~ 2019-08-01 15:23
    关注

    问题 1, 月环比增长率 和 用户月新增量 两个数据的量纲不一样,放到同一个坐标轴里面肯定别扭,解决办法是,创建两个y轴,设置 yAxisIndex让两个series映射到不同的y轴上;
    问题2,边框是坐标轴在 grid 区域中的分隔,有个选项 splitLine 可以指定
    问题3,检查legend.data 里的name 和 series 的 name是否一致?'用户月新增量' or '住户月新增量'?


    option = {
        title: {
            text: '最近一年用户新增趋势'
        },
        tooltip: {
            trigger: 'axis'
        },
        legend: {
            type: 'scroll',
            data: ['月环比增长率', '用户月新增量']
        },
        toolbox: {
            show: false,
            feature: {
                magicType: {
                    show: true,
                    type: ['stack', 'tiled']
                },
                saveAsImage: {
                    show: true
                }
            }
        },
        xAxis: {
            type: 'category',
            splitLine: {
                show: false
            },
            axisLine:{
                onZero:true,
                onZeroAxisIndex:1
            },
            data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
        },
        yAxis: [{
                type: 'value',
                name: '用户量',
                axisTick: {
                    show: false
                },
                position:'left',
                offset:70,
                splitLine:{
                    show:false
                },
                axisLine:{
                    show:false,
                },
                axisLabel:{
                    formatter:function (value, index) {
                        if(value == -100){
                            return 0;
                        }
                        if (value > 0 && (value-300) % 200 === 0){
                            return value;
                        }else{
                            return ''
                        }
                    }
                },
                min:-900,
                max:1500,
                interval:100,
            },
            {
                type: 'value',
                name: '月环比增长率',
                axisLabel: {
                    formatter: '{value} %'
                },
                axisTick: {
                    show: false
                },
                position:'left',
                splitLine:{
                    show:false
                },
                min:-100,
                max:200,
                interval:25
            }
        ],
        series: [{
                name: '月环比增长率',
                type: 'bar',
                data: [175,-30,-28,100,-75,150,-25,-5,75,10,-50,25],
                itemStyle: {
                    normal: {
                        color: '#66b7ef'
                    }
                },
                yAxisIndex:1
            },
            {
                name: '用户月新增量',
                type: 'line',
                smooth:true,
                data: [400,1000,700,500,900,300,600,500,400,800,1000,500],
                itemStyle: {
                    normal: {
                        lineStyle: {
                            color: '#66b7ef'
                        }
                    }
                },
                yAxisIndex:0
            }
        ]
    };
    

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条