echarts动态排序柱状图 学习笔记

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态排序柱状图</title>
    <script src="echarts-5.1.2.min.js"></script>
    <script src="jquery/js/jquery-2.1.4.min.js"></script>
</head>
<body>
    <div id="main" style="height: 400px;width: 600px;"></div>
    <script>
        var myChart = echarts.init(document.getElementById('main'));
        var option;
        var data=[];
        for(let i=0;i<5;++i){
            data.push(Math.round(Math.random()*200));
        }
        option ={
            xAxis:{
                max:'dataMax', //表示用数据的最大值作为X轴最大值,视觉效果更好
            },
            yAxis:{
                type:'category',
                data:['a','b','c','d','e'],
                inverse:true, //设为true表示Y轴 从下往上 是 从小到大 的排序

                
                animationDuration:300, //表示第一次柱条排序动画的时长为300

                
                animationDurationUpdate:300, //表示第一次后 柱条排序动画的时长为300
                max:2 //只显示最大的3条 ,不设置则显示所有柱条
            },
            series:[
                {
                    realtimeSort:true, //设为true表示开启Y轴的动态排序效果
                    name:'x',
                    type:'bar',
                    data:data,
                    label:{
                        show:true,
                        position:'right',
                        valueAnimation:true //如果想要实时改变标签,需要将 series.label.valueAnimation 设为 true ??有待学习不明白
                    }
                }
            ],
            legend:{
                show:true
            },
            //animationDuration 设为 0,表示第一份数据不需要从 0 开始动画(如果希望从 0 开始则设为和 animationDurationUpdate 相同的值)
            animationDuration:0,

            //animationDurationUpdate 建议设为 3000 表示每次更新动画时长,这一数值应与调用 setOption 改变数据的频率相同
            animationDurationUpdate:3000,

            AnimationEasing:'linear',
            AnimationEasingUpdate:'linear'
        };

        function run(){
            var data = option.series[0].data;
            for(var i=0;i<data.length;++i){
                if(Math.random() > 0.9){
                    data[i] += Math.round(Math.random() * 2000);
                }
                else{
                    data[i] += Math.round(Math.random() * 200);
                }
            }
            myChart.setOption(option);
        }

        setTimeout(function(){
            run();
        },0);

        //以 animationDurationUpdate 的频率调用 setInterval,更新数据值,显示下一个时间点对应的柱条排序
        setInterval(() => {
            run();
        }, 3000);

        option && myChart.setOption(option);
    </script> 
    
</script>
</body>
</html>

直接贴代码吧,照官网例子敲的,敲完发现出不来,也是醉了,寻思半天f12也不报错,结果犯了一个低级错误,没有设置echarts图容器,也就是页面上div的高宽,显示个毛线呀

另外需要注意animationDuration、animationDurationUpdate两个属性,在yAxis中可以设置表示的是柱条排序动画的时长,在series中也有此属性的设置,表示的内容含义不同,见代码注释

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值