ECharts的讲解

本文章已经生成可运行项目,

目录

什么是数据可视化

ECharts的介绍

ECharts的特点

ECharts的基本使用

操作步骤

通用配置title的相关配置

通用配置tooltip的相关配置

触发类型:trigger

触发时机:triggerOn

​格式化:formatter

通用配置toolbox的相关配置

通用配置legend的相关配置

案例源码

小结

折线图常见效果

标记 

线条控制

​编辑填充风格

紧挨边缘

缩放:脱离 0 值比例

堆叠图

 案例源码


什么是数据可视化

  • 把数据以更直观的形式展现----图表
  • 可以清晰有效地传达与沟通信息
  • 可以帮助我们快速的获取隐藏在数据中的信息

ECharts的介绍

ECharts是一个使用JavaScript实现的开源可视化库,兼容性强,底层依赖矢量图形库ZRender,提供直观,交换丰富,可高度个性化定制的数据可视化图表。

官网地址:https://echarts.apache.org/zh/index.html 

ECharts的特点

  • 它具有丰富的可视化类型,折线图,柱状图,饼图,K线图等等.....
  • 它可以支持多种数据格式,比如key-value数据格式,二维表,和TypedArray格式
  • 它可以支持流数据,对于超大的数据量而言,数据的本身就非常非常耗费资源了,而ECharts支持对数据的动态渲染,加载多少数据就渲染多少数据,这样一来就省去了漫长数据加载等待的时间,它也提供了增量渲染技术(只渲染变化的数据),从而提供资源的利用效率。
  • 还具有移动端的优化,跨平台的使用,绚丽的特效和三维可视化等等特点,感兴趣的同学可以访问这个网址:https://echarts.apache.org/zh/feature.html

小结 

ECharts的基本使用

操作步骤

  • 步骤1:引入echarts.js文件

  • 步骤2:准备一个呈现图表的盒子

  • 步骤3:初始化echarts实例对象

  • 步骤4:准备配置项

  • 步骤5:将配置项设置给echarts实例对象

echarts.js获取(此为链接,可点击发生跳转)

案例演示

<!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>
    <!-- 步骤1:引入echarts.js文件 -->
    <script src="./js/echarts.min.js"></script>
</head>
<!-- 
步骤1:引入echarts.js文件

步骤2:准备一个呈现图表的盒子

步骤3:初始化echarts实例对象

步骤4:准备配置项

步骤5:将配置项设置给echarts实例对象 -->

<body>
    <!-- 步骤2:准备一个呈现图表的盒子 -->
    <div id="changshi" style="width:600px; height:400px"></div>
    <script>
        // 步骤3:初始化echarts实例对象
        // 参数,dom,决定图表最终呈现的位置
        var chart = echarts.init(document.querySelector('#changshi'))
        var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大牛']
        var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86]
        // 步骤4:准备配置项
        var option = {
            title: {
                text: '成绩',
                link: ' http://www.itcast.cn' //点击可以发生页面跳转
            },
            xAxis: {
                type: 'value' //数值轴
            },
            yAxis: {
                type: 'category', //类目轴
                data: xDataArr
            },
            series: [{
                name: '语文成绩',
                type: 'bar', //图表的类型,line就是折线图,pie就是饼图等等
                markPoint: {
                    data: [{
                            type: 'max',
                            name: '最大值'
                        },
                        {
                            type: 'min',
                            name: '最小值'
                        }
                    ]
                },
                markLine: {
                    data: [{
                        type: 'average',
                        name: '平均值'
                    }]
                },
                label: {
                 show:true,//显示数值
                 rotate:60,//可以让数值旋转60°,给用户带来不一样的体验
                 position:'top'//位置标签
                },
                barWidth:'30%',
                data: yDataArr
            }]
        };
        // 步骤5:将配置项设置给echarts实例对象
        chart.setOption(option)
    </script>
</body>

</html>

最初效果 

添加最值和平均值 

改变柱子的宽度和显示柱子的数值

将柱状图变为横向的(最终效果) 

小结

 

通用配置title的相关配置

文字样式textStyle;标题边框的宽度(borderWidth),颜色(borderColor)和圆角半径(borderRadius);标题位置(left,top,right和bottom)。

 

通用配置tooltip的相关配置

tooltip:提示框组件,用于配置鼠标滑过或点击图表时的显示框 

触发类型:trigger

trigger:'item'

当鼠标滑在图表(图中红色矩形部分)之上,就会有提示框出现。

trigger:'axis' 

当鼠标滑在图表(图中红色矩形部分)之上,就会有提示框出现。

触发时机:triggerOn

triggerOn:'mouseover'

  

triggerOn:'click'

格式化:formatter

字符串模板

回调函数

  

 

咱们就是说,不会的话,或者忘记了,都可以去上文提到的官方文档中查询。

通用配置toolbox的相关配置

 

通用配置legend的相关配置

 

案例源码

<!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>
    <!-- 步骤1:引入echarts.js文件 -->
    <script src="./js/echarts.min.js"></script>
</head>
<!-- 
步骤1:引入echarts.js文件

步骤2:准备一个呈现图表的盒子

步骤3:初始化echarts实例对象

步骤4:准备配置项

步骤5:将配置项设置给echarts实例对象 -->

<body>
    <!-- 步骤2:准备一个呈现图表的盒子 -->
    <div id="changshi" style="width:600px; height:400px"></div>
    <script>
        // 步骤3:初始化echarts实例对象
        // 参数,dom,决定图表最终呈现的位置
        var chart = echarts.init(document.querySelector('#changshi'))
        var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大牛']
        var yDataArr1 = [88, 92, 63, 77, 94, 80, 72, 86]
        var yDataArr2 = [93, 60, 61, 62, 85, 79, 92, 30]
        // 步骤4:准备配置项
        var option = {
            title: {
                text: '成绩展示',
                textStyle: {
                    color: 'red'
                },
                borderWidth: 5, //边框宽度
                borderColor: 'blue', //边框颜色
                borderRadius: 5, //边框圆角半径
                left: 50, //距离盒子的左侧50px
                top: 10, //距离盒子的上面10px
                link: ' http://www.itcast.cn' //点击可以发生页面跳转
            },
            tooltip: {
                // trigger: 'item'
                trigger: 'axis',
                // triggerOn:'mouseover'  //鼠标滑过图表时,便会弹出提示框,这是默认的
                triggerOn: 'click', //鼠标点击图表时,才会弹出提示框
                // formatter:'{b}的成绩是{c}'
                formatter: function (arg) {
                    console.log(arg) //控制台打印参数
                    return arg[0].name + '的分数是' + arg[0].data
                }
            },
            toolbox: {
                feature: {
                    saveAsImage: {}, //导出图片的功能
                    dataView: {}, //数据视图
                    restore: {}, //重置
                    dataZoom: {}, //区域缩放
                    magicType: {
                        type: ['bar', 'line']
                    } //动态图表类型的切换
                }
            },
            legend:{
                data:['语文成绩','数学成绩']
            },//筛选系列
            xAxis: {
                type: 'category', //类目轴
                data: xDataArr
            },
            yAxis: {
                type: 'value' //数值轴
            },
            series: [{
                    name: '语文成绩',
                    type: 'bar', //图表的类型,line就是折线图,pie就是饼图等等
                    markPoint: {
                        data: [{
                                type: 'max',
                                name: '最大值'
                            },
                            {
                                type: 'min',
                                name: '最小值'
                            }
                        ]
                    },
                    markLine: {
                        data: [{
                            type: 'average',
                            name: '平均值'
                        }]
                    },
                    label: {
                        show: true, //显示数值
                        rotate: 60, //可以让数值旋转60°,给用户带来不一样的体验
                        position: 'top' //位置标签
                    },
                    // barWidth: '30%',
                    data: yDataArr1
                },
                {
                    name: '数学成绩',
                    type: 'bar', //图表的类型,line就是折线图,pie就是饼图等等
                    markPoint: {
                        data: [{
                                type: 'max',
                                name: '最大值'
                            },
                            {
                                type: 'min',
                                name: '最小值'
                            }
                        ]
                    },
                    markLine: {
                        data: [{
                            type: 'average',
                            name: '平均值'
                        }]
                    },
                    label: {
                        show: true, //显示数值
                        rotate: 60, //可以让数值旋转60°,给用户带来不一样的体验
                        position: 'top' //位置标签
                    },
                    // barWidth: '30%',
                    data: yDataArr2
                },
            ]
        };
        // 步骤5:将配置项设置给echarts实例对象
        chart.setOption(option)
    </script>
</body>

</html>

小结

折线图常见效果

标记 

  

线条控制

填充风格

紧挨边缘

缩放:脱离 0 值比例

 

堆叠图

堆积图是在普通面积图的基础上,将不同数据项一层层堆叠起来,每个数据系列的起始点是上一个数据系列的结束点,既能看到各数据系列的走势,又能看到整体的规模和不同数据项的占比情况。

两折线图堆叠前

 两折线图堆叠后

堆叠并填充后 

 案例源码

<!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>
    <!-- 步骤1:引入echarts.js文件 -->
    <script src="./js/echarts.min.js"></script>
</head>
<!-- 
步骤1:引入echarts.js文件

步骤2:准备一个呈现图表的盒子

步骤3:初始化echarts实例对象

步骤4:准备配置项

步骤5:将配置项设置给echarts实例对象 -->

<body>
    <!-- 步骤2:准备一个呈现图表的盒子 -->
    <div id="changshi" style="width:600px; height:400px"></div>
    <script>
        // 步骤3:初始化echarts实例对象
        // 参数,dom,决定图表最终呈现的位置
        var chart = echarts.init(document.querySelector('#changshi'))
        var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大牛']
        var yDataArr = [3000, 2800, 900, 1000, 800, 700, 1400, 1300]
        var yDataArr1 = [2000, 3800, 1900, 500, 900, 1700, 2400, 300]
        // 步骤4:准备配置项
        var option = {
            title: {
                text: '成绩展示',
                textStyle: {
                    color: 'red'
                },
                borderWidth: 5, //边框宽度
                borderColor: 'blue', //边框颜色
                borderRadius: 5, //边框圆角半径
                left: 50, //距离盒子的左侧50px
                top: 10, //距离盒子的上面10px
                link: ' http://www.itcast.cn' //点击可以发生页面跳转
            },
            tooltip: {
                // trigger: 'item',
                trigger: 'axis',
                // triggerOn:'mouseover'  //鼠标滑过图表时,便会弹出提示框,这是默认的
                // triggerOn: 'click', //鼠标点击图表时,才会弹出提示框
                // formatter:'{b}的成绩是{c}'
            //     formatter: function (arg) {
            //         console.log(arg) //控制台打印参数
            //         return arg[0].name + '语文的分数是' + arg[0].data
            //     }
             },
            xAxis: {
                type: 'category', //类目轴
                data: xDataArr
                // boundaryGap:false
            },
            yAxis: {
                type: 'value', //数值轴
                scale: true
            },
            series: [{
                    name: '语文成绩',
                    type: 'line', //图表的类型,line就是折线图,pie就是饼图等等
                    // markPoint: {
                    //     data: [{
                    //             type: 'max',
                    //             name: '最大值'
                    //         },
                    //         {
                    //             type: 'min',
                    //             name: '最小值'
                    //         }
                    //     ]
                    // },
                    // markLine: {
                    //     data: [{
                    //         type: 'average',
                    //         name: '平均值'
                    //     }]
                    // },
                    // markArea: {
                    //     data: [
                    //         [{
                    //             xAxis: '张三'
                    //         }, {
                    //             xAxis: '李四'
                    //         }],
                    //         [{
                    //             xAxis: '小明'
                    //         }, {
                    //             xAxis: '茅台'
                    //         }]
                    //     ]
                    // },
                    // smooth: true, //变成平滑的效果
                    lineStyle: {
                        color: 'green',
                        type: 'solid' //虚线的效果 dotted 点线  solid 实线(默认)
                    },
                    label: {
                        show: true, //显示数值
                        rotate: 60, //可以让数值旋转60°,给用户带来不一样的体验
                        position: 'top' //位置标签
                    },
                    // barWidth: '30%',
                    // areaStyle: {
                    //     color: 'green'
                    // }, //面积填充
                    data: yDataArr,
                    stack:'all',
                    areaStyle:{}
                },
                {
                    name: '数学成绩',
                    type: 'line',
                    label: {
                        show: true, //显示数值
                        rotate: 60, //可以让数值旋转60°,给用户带来不一样的体验
                        position: 'top' //位置标签
                    },
                    data:yDataArr1,
                    stack:'all',
                    areaStyle:{}
                }
            ]
        };
        // 步骤5:将配置项设置给echarts实例对象
        chart.setOption(option)
    </script>
</body>

</html>

本文章已经生成可运行项目
<think>好的,用户遇到了Git合并时本地更改会被覆盖的问题,需要解决方案。根据之前的引用资料,解决方法主要有commit、stash和revert三种。首先,我得确认用户的具体情况,比如他们的本地更改是否已经完成,是否需要保留,或者是否可以丢弃。用户可能不太清楚这三种方法的适用场景,需要详细解释每个选项的步骤和优缺点。比如,commit适用于需要保留更改的情况,stash适合临时保存以便后续恢复,而revert则是直接撤销更改,适用于不需要保留的情况。需要结构清晰,分点说明,每个方法都给出操作步骤和适用场景,帮助用户理解哪种情况最适合他们。还要注意使用中文,避免技术术语过于复杂,让用户容易理解。同时,生成相关问题,可能涉及如何恢复stash的内容,或者如何避免频繁冲突等,扩展用户的知识点。另外,要确保LaTeX格式正确,但在这个问题中可能用不上数学公式,所以主要关注代码块和引用标识。检查引用是否正确,比如引用[^1]和[^2]的来源是否相关,用户提供的引用内容是否准确对应解决方案。 最后,确保回答真实可靠,操作步骤准确无误,避免误导用户。可能还需要提醒用户根据具体情况选择方法,比如如果有未完成的实验性代码,stash可能是更好的选择,而如果是确定要保留的修改,则应该commit。</think>要解决Git合并时本地更改被覆盖的问题,可根据不同场景选择以下三种方法: ### 一、提交本地更改(commit) **适用场景**:当本地更改已测试通过且需要保留到版本历史中。 **操作步骤**: 1. 将改动添加到暂存区: ```bash git add . # 添加所有文件 # 或指定文件 git add file1.txt file2.py ``` 2. 提交更改并添加描述: ```bash git commit -m "完成用户登录模块优化" ``` 3. 执行合并操作: ```bash git merge origin/main ``` **优点**:保留完整的开发记录,便于后续追溯[^1]。 ### 二、暂存更改(stash) **适用场景**:需要临时保存未完成的修改(如调试代码),优先处理合并操作。 **操作步骤**: 1. 保存当前工作状态: ```bash git stash # 可选添加备注 git stash save "用户登录模块调试代码" ``` 2. 查看暂存记录列表: ```bash git stash list ``` 3. 合并远程分支: ```bash git merge origin/main ``` 4. 恢复暂存内容: ```bash git stash pop # 恢复并删除最近一次暂存 # 或指定特定暂存 git stash apply stash@{1} ``` **优点**:保持工作目录整洁,特别适合处理紧急合并任务[^2]。 ### 三、撤销本地更改(revert) **适用场景**:本地修改可丢弃(如实验性代码或错误修改)。 **操作步骤**: 1. 撤销所有未提交的修改: ```bash git checkout -- . # 全部文件 # 或指定文件 git checkout -- file1.txt ``` 2. 执行合并操作: ```bash git merge origin/main ``` **风险提示**:此操作不可逆,需确认文件无需保留。 --- ### 对比决策表 | 方法 | 保留记录 | 可恢复性 | 适用阶段 | |---------|----------|----------|------------------| | commit | ✅ | ✅ | 功能开发完成时 | | stash | ❌ | ✅ | 开发中途临时切换 | | revert | ❌ | ❌ | 放弃无效修改 | ### 扩展应用场景 - 当存在多个暂存时,可用`git stash list`查看记录,通过`git stash apply stash@{n}`精准恢复 - 合并后出现冲突时,可使用`git mergetool`可视化工具解决冲突 - 长期分支开发推荐使用`git rebase`保持提交历史线性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deyong1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值