ECharts

ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求

官网:https://echarts.apache.org/

1.简单的写一个小案例:

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>
    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
        var myEcharts = echarts.init(main, null, {
                width: 800,
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            title: [{
                text: 'Tangential Polar Bar Label Position (middle)'
            }],
            polar: {
                radius: [30, '80%']
            },
            angleAxis: {
                max: 4,
                startAngle: 75
            },
            radiusAxis: {
                type: 'category',
                data: ['a', 'b', 'c', 'd']
            },
            tooltip: {},
            series: {
                type: 'bar',
                data: [2, 1.2, 2.4, 3.6],
                coordinateSystem: 'polar',
                label: {
                    show: true,
                    position: 'middle',
                    formatter: '{b}: {c}'
                }
            }
        };
        //第四部
        myEcharts.setOption(option)
    </script>
</body>

</html>

效果:

 一、柱状图

1、一个简单的柱状图

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>
    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
        var myEcharts = echarts.init(main, null, {
                width: "auto",
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: [120, 200, 150, 80, 70, 110, 130],
                type: 'bar',
                showBackground: true,
                backgroundStyle: {
                    color: 'rgba(180, 180, 180, 0.2)'
                }
            }]
        };
        //第四部
        myEcharts.setOption(option)
            // 实现响应式
        window.onresize = function() {
            myEcharts.resize()
        }
    </script>
</body>

</html>

注:在未指定图表容器大小时,可以在图表初始化时给容器指定大小

效果:

 2.给柱状图设置样式

  • 自定义样式可以在官网点击(文档>使用手册>样式>找到主题编辑器点击就可以去设置了,设置完成后进行下载即可)
  • 全局样式:color:["颜色","颜色]
  • 局部样式:itemStyle: {color: "颜色"}

以上代码

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>
    <!-- 自定义样式 -->
    <script src="js/customed.js"></script>
    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
            // customed:<!-- 自定义样式 -->

        var myEcharts = echarts.init(main, "customed", {
                width: 800,
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            // 全局样式
            // color: ["green", "red"],

            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                // 局部样式
                data: [120, {
                    value: 200,
                    itemStyle: {
                        color: "red"
                    }
                }, 150, 80, 70, 110, 130],
                type: 'bar',
                showBackground: true,
                backgroundStyle: {
                    color: 'rgba(180, 180, 180, 0.2)'
                }
            }]
        };
        //第四部
        myEcharts.setOption(option)
    </script>
</body>

</html>

效果:

3.设置坐标轴的样式

  •  标题:name
  • 轴线:axisLine

  • 刻度:axisTick

  • 单位:axisLabel

以上代码

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>

    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
            // customed:<!-- 自定义样式 -->

        var myEcharts = echarts.init(main, null, {
                width: 800,
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            // 全局样式
            dataset: {
                // dimensions: ["product", "2015", "2016", "2017"],
                source: [
                    ['产品', '2015', '2016', '2017'],
                    ['拿铁', 50, 80, 30],
                    ['奶茶', 85, 50, 40],
                    ['芝士可可', 20, 30, 60],
                    ['布朗尼', 60, 90, 130],

                ]
            },
            xAxis: {
                type: 'category',
            },
            yAxis: {
                type: 'value',
                // 标题
                name: "销量",
                // nameLocation: "middle",
                // 轴线
                axisLine: {
                    // 是否显示
                    show: true,
                    symbol: ["none", "arrow"], //轴线箭头    
                    // 设置轴线样式
                    lineStyle: {
                        type: "dashed",
                        color: "red"
                    }
                },
                // axisTick:刻度
                axisTick: {
                    // 是否显示
                    show: true,
                    // 刻度长度
                    length: 6,
                    // 样式
                    lineStyle: {
                        color: "green"
                    }
                },
                // axisLabel:单位
                axisLabel: {
                    formatter: "{value}(销量)",
                    fontSize: 12,
                }
            },
            series: [{
                type: 'bar'
            }, {
                type: 'bar'
            }, {
                type: 'bar'
            }]
        };
        //第四部
        myEcharts.setOption(option)
    </script>
</body>

</html>

效果:

 4.设置样式

使用itemStyle设置(样式都和css很像)

响应式: window.onresize = function() {myEcharts.resize()}

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>
    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
        var myEcharts = echarts.init(main, null, {
                width: "auto",
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            // stack:堆叠
            series: [{
                data: [120, 200, 150, 80, 70, 110, 130],
                type: 'bar',
                stack: "x",
                itemStyle: {
                    color: "green"
                },
                barWidth: "20%"
            }, {
                data: [10, 100, 60, 200, 100, 50, 20],
                type: 'bar',
                // stack: "x",
                itemStyle: {
                    color: "red",
                    borderColor: "green",
                    borderWidth: 2,
                    shadowColor: "blue",
                    borderType: "dashed",
                    // 圆角
                    barBorderRadius: 10
                }

            }]
        };
        //第四部
        myEcharts.setOption(option)
            // 实现响应式
        window.onresize = function() {
            myEcharts.resize()
        }
    </script>
</body>

</html>

效果:

案例:温度表

 

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
            // customed:<!-- 自定义样式 -->

        var myEcharts = echarts.init(main, null, {
                width: "auto",
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            //
            legend: {
                // data: ["降水量", "温度"]
            },
            dataset: {
                // dimensions: ["product", "2015", "2016", "2017"],
                source: [
                    // 降水量:[2.7, 4.9, 8.3, 21.2, 34.2, 78.1, 185.2, 159.7, 45.5, 21.8, 7.4, 2.8]
                    // 温度:[-3.7, -0.7, 5.8, 14.2, 19.9, 24.4, 26.2, 24.8, 20.0, 13.1, 4.6, -1.5]
                    ["月份", "降水量", "温度"],
                    ['1月', 2.7, -3.7],
                    ['2月', 4.9, -0.7],
                    ['3月', 8.3, 5.8],
                    ['4月', 21.2, 14.2],
                    ['5月', 34.2, 19.9],
                    ['6月', 78.1, 24.4],
                    ['7月', 185.2, 26.2],
                    ['8月', 159.7, 24.8],
                    ['9月', 45.5, 20.0],
                    ['10月', 21.8, 13.1],
                    ['11月', 7.4, 4.6],
                    ['12月', 2.8, -1.5],
                ]
            },
            xAxis: {
                type: 'category',
            },
            yAxis: [{
                type: 'value',
                name: "降水量",
                // 轴线
                axisLine: {
                    show: true,
                    symbol: ["none", "arrow"]
                },
                // 刻度
                axisTick: {
                    show: true
                },
                // 描述单位
                axisLabel: {
                    formatter: "{value}(mL)"
                }
            }, {
                type: 'value',
                name: "温度",
                // 轴线
                axisLine: {
                    show: true,
                    symbol: ["none", "arrow"]
                },
                // 刻度
                axisTick: {
                    show: true
                },
                // 描述单位
                axisLabel: {
                    formatter: "{value}(℃)"
                }
            }],
            series: [{
                type: 'bar',
                yAxisIndex: 0
            }, {
                type: 'line',
                yAxisIndex: 1
            }]
        };
        //第四部
        myEcharts.setOption(option)
    </script>
</body>

</html>

效果:

二、折线

 简单的折线

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>
    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
        var myEcharts = echarts.init(main, null, {
                width: "auto",
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            xAxis: {
                type: 'category',

            },
            yAxis: {
                type: 'value'
            },
            // stack:堆叠
            series: [{
                // data: [12, 60, 100, 20, 200],
                // 
                data: [
                    [20, 120],
                    [50, 180],
                    [110, 30]
                ],
                type: "line",
                label: {
                    show: true,
                    position: [10, -20]
                },
                // 设置样式
                lineStyle: {
                    color: "green",
                    type: "dashed",
                    width: 3
                }
            }]
        };
        //第四部
        myEcharts.setOption(option)
            // 实现响应式
        window.onresize = function() {
            myEcharts.resize()
        }
    </script>
</body>

</html>

效果:

 2.图形中一些按钮

代码:

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>
    <style>
        /* #main {
            width: 100%;
            height: 600px;
            border: 1px solid red;
        } */
    </style>
</head>

<body>
    <div id="main"></div>
    <script>
        //获取到div
        var main = document.getElementById("main")
            //初始化图表
            //第一种情况:此种情况是已经提前给图表容器设置好大小
            //var myEcharts = echarts.init(main)
            //第二种:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示:
        var myECharts = echarts.init(main, "customed", {
                width: "auto",
                height: 600
            })
            //设置数据及格式(配置)
        var option = {
            //此处的color是全局调色板
            color: ["green", "red", "yellow", "blue"],
            xAxis: {
                type: 'category',
                data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                data: [120, {
                    value: 200,
                    itemStyle: {
                        color: "red"
                    }
                }, 150, 80, 70, 110, 130],
                type: 'bar'
            }],
            toolbox: {
                show: true,
                feature: {
                    //保存为图片
                    saveAsImage: {
                        show: true,
                        type: 'jpg',
                        name: '下雨量',
                        title: '保存为图片',
                        backgroundColor: 'red'
                    },
                    //数据视图
                    dataView: {
                        show: true,
                        title: '销量数据',
                        lang: ['数据视图', '关闭', '刷新'],
                        textareaColor: 'lightblue',
                        textareaBorderColor: 'lightblue',
                        backgroundColor: 'lightblue'
                    },
                    magicType: {
                        show: true,
                        type: ['line', 'bar'],
                        title: {
                            line: '切换为折线图',
                            bar: '切换为柱状图'
                        }
                    },
                    dataZoom: {
                        show: true,
                        title: {
                            zoom: '区域缩放',
                            back: '区域缩放还原'
                        }
                    },
                    restore: {
                        show: true,
                        title: '还原'
                    }
                }
            },
        };
        //第四步:
        myECharts.setOption(option)
            //实现响应式容器大小的改变
        window.onresize = function() {
            myECharts.resize();
        };
    </script>
</body>

</html>

效果:

 

 案例:动态排序

<!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>Document</title>
    <script src="js/echarts/dist/echarts.min.js"></script>
    <!-- 汉化包 -->
    <script src="js/echarts/i18n/langZH.js"></script>
    <style>
        /* div {
            width: 100%;
            height: 600px;
        } */
    </style>
</head>

<body>
    <!--  -->
    <div id="main"></div>
    <script>
        var main = document.getElementById("main")
            // 初始化图表
            // 第一种情况:此种情况是已经提前给图表容器设置好了大小
            // var myEcharts = echarts.init(main)
            //第二种情况:在未指定图表容器大小时,可以在图表初始化时给容器指定大小,如下所示
        var myEcharts = echarts.init(main, null, {
                width: "auto",
                height: 600
            })
            //设置数据及格式(配置)
        const data = [];
        for (let i = 0; i < 6; ++i) {
            data.push(Math.round(Math.random() * 200));
        }
        var option = {
            xAxis: {
                max: 'dataMax'
            },
            yAxis: {
                type: 'category',
                data: ['A', 'B', 'C', 'D', 'E', 'F'],
                inverse: true,
                animationDuration: 300,
                animationDurationUpdate: 300,
                max: 5 // only the largest 3 bars will be displayed
            },
            series: [{
                realtimeSort: true,
                name: 'X',
                type: 'bar',
                data: data,
                label: {
                    show: true,
                    position: 'right',
                    valueAnimation: true
                }
            }],
            legend: {
                show: true
            },
            animationDuration: 0,
            animationDurationUpdate: 3000,
            animationEasing: 'linear',
            animationEasingUpdate: 'linear'
        };

        function run() {
            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);
                }
            }
            myEcharts.setOption({
                series: [{
                    type: 'bar',
                    data
                }]
            });
        }
        setTimeout(function() {
            run();
        }, 0);
        setInterval(function() {
            run();
        }, 3000);
        //第四部
        myEcharts.setOption(option)
            // 实现响应式
        window.onresize = function() {
            myEcharts.resize()
        }
    </script>
</body>

</html>

效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值