echarts的使用

实现效果:
在这里插入图片描述
实现:(带实现思路)
echarts官网:https://www.echartsjs.com/zh/feature.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="echarts.min.js"></script>
    <title>Document</title>
</head>

<body>
    <!-- 第一步:去echart官网的定制下下载echarts.min.js -->
    <!-- 第二步:创建页面:导入echarts.min.js -->
    <!-- 第三步:为一个ECharts图准备一个具备大小(宽高)的Dom  -->
    <!-- 下面有四个:定义了四个空间 -->
    <div id="main" style="width: 600px;height:400px;"></div>

    <div id="main2" style="width: 600px;height:400px;left: 700px;top: 0px;position: absolute;"></div>

    <div id="main3" style="width: 600px;height:400px;left: 0px;top: 400px;position: absolute;"></div>

    <div id="main4" style="width: 600px;height:400px;left: 700px;top: 400px;position: absolute;"></div>

    <script type="text/javascript">
        //模拟后台传来的json
        var jsondata =
            '{"sales":[{"name":"衬衫","num":"70"},{"name":"羊毛衫","num":"27"},{"name":"裤子","num":"36"},{"name":"高跟鞋","num":"18"},{"name":"袜子","num":"85"},{"name":"棉袄","num":"105"}]}';
        var jsonobj = JSON.parse(jsondata); //如果后端返回的数据是json格式的text文本,就需要使用JSON.parse转换为js对象,

        //获取json中的数值    
        var dataName = []; //name
        var dataNum = []; //num
        var temp = jsonobj; //使用一个变量接收

        //匿名函数解析json串中的数值,关键点 JavaScript的匿名函数:(自动执行)
        // 这里创建了一个匿名函数(在第一个括号内),第二个括号用于调用该匿名函数,并传入参数。括号是表达式,是表达式就有返回值,所以可以在后面加一对括号让它们执行.
        (function () {
            for (var i = 0; i < temp.sales.length; i++) { //JSON对象是可以通过点来获取指定属性的值,前提要转换为JS对象
                dataName.push(temp.sales[i].name); //给数组填值
                dataNum.push(temp.sales[i].num);
            }
        })(); //表示匿名函数不用传参,直接执行就行

        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main')); //使用echarts对象初始化接管区
        var myChart2 = echarts.init(document.getElementById('main2'));


        //折线图,注意点:x,y轴的使用的是name还是unm
        var option = {
            title: { //
                text: '衣物销量统计'
            },
            // 提示框
            tooltip: {
                trigger: 'axis'
            }, //出现一条平行y轴的竖线在节点处
            legend: { //节点提示

                /*  // orient 设置布局方式,默认水平布局,可选值:'horizontal'(水平) ¦ 'vertical'(垂直)
                 orient: 'horizontal',
                 // x 设置水平安放位置,默认全图居中,可选值:'center' ¦ 'left' ¦ 'right' ¦ {number}(x坐标,单位px)
                 x: 'left',
                 // y 设置垂直安放位置,默认全图顶端,可选值:'top' ¦ 'bottom' ¦ 'center' ¦ {number}(y坐标,单位px)
                 y: 'top', */
                data: ['销量']
            },
            /*  //  图表距边框的距离,可选值:'百分比'¦ {number}(单位px)
             grid: {
                 top: '16%', // 等价于 y: '16%'
                 left: '3%',
                 right: '8%',
                 bottom: '3%',
                 containLabel: true
             }, */
            /*        //工具框,可以选择
              toolbox: {
                  feature: {
                      saveAsImage: {} //下载工具
                  }
              }, */
            xAxis: { //x轴
                //x轴字体颜色
                /*axisLine: {
                    lineStyle: {
                        color: '#C50023'
                    }
                },*/
                // -------------------------
                /*  type:'category', */
                /* ECharts xAxis配置 x坐标轴的类型
                xAxis.type | string
                [default: 'category']
                坐标轴类型。
                可选:
                'value'数值轴, 适用于连续数据。 
                'category'类目轴, 适用于离散的类目数据, 为该类型时必须通过 data 设置类目数据。 
                'time'时间轴, 适用于连续的时序数据, 与数值轴相比时间轴带有时间的格式化, 在刻度计算上也有所不同, 例如会根据跨度的范围来决定使用月, 星期, 日还是小时范围的刻度。
                'log'对数轴。 适用于对数数据。 */
                // -----------------------------
                // 设置X轴数据旋转倾斜
                axisLabel: { //比如显示倾斜
                    rotate: 30, // 旋转角度
                    interval: 0 //设置X轴数据间隔几个显示一个,为0表示都显示
                },
                // boundaryGap值为false的时候,折线第一个点在y轴上
                boundaryGap: false,
                data: dataName, //数据是个数组
            },
            yAxis: [{
                //定义y轴最大与最小值

                min: 0, //设置y轴刻度的最小值
                max: 120, //设置y轴刻度的最大值
                type: 'value', //使用数值轴,适用于连续数据
                name: '日销量(万)', //type提示
                splitNumber: 12, // 设置y轴刻度间隔个数,是0的时候就是echar按照默认规格分隔,默认是5
                axisLine: {
                    lineStyle: {
                        // 设置y轴颜色,默认是黑色
                        color: '#87CEFA'
                    }
                }
            }],

            series: [{

                //折线上数字
                label: {
                    normal: {
                        show: true,
                        position: 'top',
                        formatter: 100
                    },

                },

                // 折线颜色
                /*itemStyle: {
                    normal: {
                        //线上。的颜色
                        color: '#33CCFF',
                        lineStyle: {
                            //线的颜色
                            color: '#33CCFF'
                        }
                    }
                },*/

                //顶上小图标名称
                name: '销量',
                type: 'line',
                data: dataNum,

                //平均值
                markLine: {
                    data: [{
                        type: 'average',
                        name: '平均值'
                    }]
                },

            }]
        };
        // 完成第一个折线图设置,
        myChart.setOption(option);

        //柱状图
        // 指定图表的配置项和数据
        var option2 = {
            title: {
                text: '衣物销量统计'
            },
            tooltip: {},
            legend: {
                data: ['销量']
            },
            xAxis: {
                data: dataName,
            },
            yAxis: {
                type: 'value',
                name: '日销量(万)',
                splitNumber: 5
            },
            series: [{
                name: '销量',
                type: 'bar',
                //柱状宽度
                barWidth: 20,
                data: dataNum,
            }]
        };
        // 使用刚指定的配置项和数据显示图表。
        myChart2.setOption(option2);

        //饼状图
        echarts.init(document.getElementById('main3')).setOption({
            title: {
                text: '衣物销量统计',
                subtext: '日销量(万)',
                x: 'center',
                //背景色
                //backgroundColor:'rgba(12,121,123,0.1)'
            },
            series: [{
                name: '详情',
                type: 'pie',

                //饼状图的大小
                //radius : '55%',

                center: ['50%', '60%'],
                data: (function () { //饼状图需要函数解析数字内的值
                    var res = [];
                    var len = dataName.length;
                    while (len--) {
                        res.push({
                            name: dataName[len],
                            value: dataNum[len]
                        });
                    }
                    return res;
                })()
            }]
        })

        echarts.init(document.getElementById('main4')).setOption({
            title: {
                text: '衣物销量统计'
            },
            tooltip: {},
            legend: {
                data: ['销量']
            },
            xAxis: {
                data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
            },
            yAxis: {
                type: 'value',
                name: '日销量(万)',
                min: 0,
                max: 4,
                axisLabel: {
                    formatter: function (value) {
                        var texts = [];
                        if (value == 0) {
                            texts.push('woo');
                        } else if (value <= 1) {
                            texts.push('好');
                        } else if (value <= 2) {
                            texts.push('很好');
                        } else if (value <= 3) {
                            texts.push('非常好');
                        } else {
                            texts.push('完美');
                        }
                        return texts;

                    }
                }
            },
            series: [{
                name: '销量',
                type: 'bar',
                //柱状宽度
                //barWidth: 20,
                data: [1, 4, 2, 3, 2, 0]
            }]
        })
    </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值