程序员

使用echarts画柱状图

2019-01-06  本文已影响19人  请叫我小中中

前言:
echarts是百度出品一款报表插件,图表展示十分的丰富,在我们的开发中使用也比较广泛,但是官方的样例都是十分简单的,好在他们的api文档提供了特别多的配置项,这就为我们画更丰富的图表提供了可能性。
使用echarts遇到过的坑:

今日分享重点:画柱状图。
1.引入相关js

<script type="text/javascript" src="../js/jquery-2.1.1.js"></script>
<script type="text/javascript" src="../echarts-4.2.0/echarts.min.js"></script>

2.确定容器

<div id="bar" style="width: 600px;height: 325px;">
</div>

3.定义画折线图是方法,配置图表参数

/**
 * 画柱状图
 * @param container 容器
 * @param xData x轴数据
 * @param seriesData 图表数据
 */
function drawBar(container, xData, seriesData) {
    var myCharts = echarts.init(document.getElementById(container));
    myOption = {
        //提示框组件
        tooltip : {
            //鼠标悬浮到某柱子时触发的提示信息类型
            trigger : 'item',
            position : 'top',
            formatter : '{c}'
        },
        //图形位置
        grid : {
            left : '4%',
            right : '4%',
            bottom : '4%',
            top : 30,
            //图形位置包含坐标轴的刻度标签
            //如果图形位置调整好缺不包含坐标轴,坐标轴信息会显示不全
            containLabel : true
        },
        xAxis : [ {
            type : 'category',
            //x轴线样式
            axisLine : {
                show : true,
                lineStyle : {
                    color : 'rgba(255,255,255,0.2)',
                    //x轴想要设置为轴线隐藏,width设置为0
                    width : 1,
                    type : 'dashed'
                }
            },
            //x轴字体样式
            axisLabel : {
                show : true,
                fontSize : 12,
                color : 'white',
                //x轴坐标全部显示
                interval : 0
            },
            data : xData
        } ],
        yAxis : [ {
            type : 'value',
            //y轴字体样式
            axisLabel : {
                show : true,
                color : 'white',
                fontSize : 12
            },
            //y轴线样式
            axisLine : {
                show : false
            },
            //设置与x轴平行的线(分割线)不显示
            splitLine : {
                show : false,
                lineStyle : {
                    //如果显示,设置分割线的宽度,设置为0的话,即为分割线不显示
                    width : 1
                }
            }
        } ],
        series : [ {
            type : 'bar',
            //柱子宽度
            barWidth : '20',
            //柱子间隔
            barGap : '20',
            itemStyle : {
                color : {
                    type : 'linear',
                    x : 0,
                    y : 0,
                    x2 : 0,
                    y2 : 1,
                    colorStops : [ {
                        offset : 0,
                        color : '#6ae6dd' // 0% 处的颜色
                    }, {
                        offset : 1,
                        color : '#3b8ce4' // 100% 处的颜色
                    } ]
                },
                barBorderRadius : [ 30, 30, 0, 0 ],
            },
            //柱状图悬浮或者跳动到某柱子时样式
            emphasis : {
                itemStyle : {
                    color : {
                        type : 'linear',
                        x : 0,
                        y : 0,
                        x2 : 0,
                        y2 : 1,
                        colorStops : [ {
                            offset : 0,
                            color : 'rgba(254,136,94,1)' // 0% 处的颜色
                        }, {
                            offset : 1,
                            color : 'rgba(251,46,73,1)' // 100% 处的颜色
                        } ]
                    }
                }
            },
            data : seriesData
        } ]
    };
    myCharts.setOption(myOption);

    var app = {};
    app.currentIndex = -1;
    var myTimer = setInterval(
        function() {
            var dataLen = myOption.series[0].data.length;
            if ((app.currentIndex < dataLen - 1)
                    && myOption.series[0].data[app.currentIndex + 1].value == 0) {
                myCharts.dispatchAction({
                    type : 'downplay',
                    seriesIndex : 0,
                    dataIndex : app.currentIndex
                });
                app.currentIndex = (app.currentIndex + 1) % dataLen;
            } else {
                // 取消之前高亮的图形
                myCharts.dispatchAction({
                    type : 'downplay',
                    seriesIndex : 0,
                    dataIndex : app.currentIndex
                });
                app.currentIndex = (app.currentIndex + 1) % dataLen;
                // 高亮当前图形
                myCharts.dispatchAction({
                    type : 'highlight',
                    seriesIndex : 0,
                    dataIndex : app.currentIndex
                });
                // 显示 tooltip
                myCharts.dispatchAction({
                    type : 'showTip',
                    seriesIndex : 0,
                    dataIndex : app.currentIndex
                });
            }
        }, 3000);
}

4.调用方法,传递参数

var xData = ['滨海', '乡村', '历史文化', '主题乐园', '自然景观', '红色旅游', '工业旅游', '亲子游', '休闲度假', '其他'];
var seriesData = [ {
    value : 56
}, {
    value : 156
}, {
    value : 256
}, {
    value : 86
}, {
    value : 96
}, {
    value : 36
}, {
    value : 126
}, {
    value : 176
}, {
    value : 261
}, {
    value : 121
} ];
drawBar('bar', xData, seriesData);

5.划重点

6.上图


柱状图.png
上一篇 下一篇

猜你喜欢

热点阅读