【统计图】Echarts实现多条折线图渐变堆叠效果

简介: 【统计图】Echarts实现多条折线图渐变堆叠效果



initSgLineChart() {
    // 基于DOM,初始化echarts实例(注意!Vue的DOM日怪的很,一般要腾个1秒才加载完)
    this.lineChart = this.$echarts.init(
        document.getElementById("sg-line-chart")
    );
    onresize=()=>{
        this.lineChart.resize();//当页面大小变化→图标对应变化
    }
    // 绘制折线图(曲线图)
    this.lineChart.setOption({
        grid: {
            left: 23,
            top: 30,
            right: 22,
            bottom: 10,
            containLabel: true//false是依据坐标轴来对齐的,true是依据坐标轴上面的文字边界来对齐
        },
        legend: {
            top: -2,
            right: 20,
            itemGap: 5,//图例每项之间的间隔
            height: 10,
            itemWidth: 15,//图例标记的图形宽度
            itemHeight: 10,
            padding: [5, 0, 0, 0],
            textStyle: {
                padding: [1, 0, 0, -5]
            },
            data: [
                { name: "实到", textStyle: { color: "#18c196" } },
                { name: "迟到", textStyle: { color: "#ff976a" } },
                { name: "旷课", textStyle: { color: "#f15441" } },
                { name: "请假", textStyle: { color: "#0089ff" } }
            ]
        },
        xAxis: {
            type: "category",
            boundaryGap: false, //防止统计图左侧和纵轴有间隙
            axisLabel: { textStyle: { color: "gray" } },
            axisTick: { show: false }, //隐藏横坐标刻度小线条
            splitLine: {
                show: true,
                lineStyle: { color: ["#f0f0f0"] } //纵向分割线
            },
            axisLine: { lineStyle: { color: "lightgray", width: 1 } },
            data: ["7/6", "7/7", "7/8", "7/9", "7/10"]//横坐标的标签文字
        },
        yAxis: {
            type: "value",
            name: "人数/日期",
            min: 0,
            minInterval: 1,
            nameLocation: "end",
            nameTextStyle: { color: "gray", fontSize: "12" },
            axisLabel: { textStyle: { color: "gray" } },
            axisTick: { show: false }, //隐藏纵坐标刻度小线条
            splitLine: {
                show: true,
                lineStyle: { color: ["#f0f0f0"] } //横向分割线
            },
            axisLine: { lineStyle: { color: "lightgray", width: 1 } }
        },
        series: [
            {
                name: "实到",
                smooth: false, //平滑
                type: "line",
                symbolSize: 10, //折线拐点大小
                data: [41, 51, 55, 58, 49],//纵坐标值
                itemStyle: {
                    normal: {
                        color: "#18c196", //图例颜色
                        borderWidth: 4,
                        borderColor: "#18c196",
                        lineStyle: { color: "#18c196", width: 2 }
                    }
                },
                areaStyle: {
                    normal: {
                        // 渐变填充色(线条下半部分)
                        color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
                            { offset: 0, color: "#18c196" },
                            { offset: 1, color: "#18c19600" }
                        ])
                    }
                }
            },
            {
                name: "迟到",
                smooth: false, //平滑
                type: "line",
                symbolSize: 0, //折线拐点大小
                data: [3, 6, 3, 1, 1],//纵坐标值
                itemStyle: {
                    normal: {
                        color: "#ff976a", //图例颜色
                        borderWidth: 2,
                        borderColor: "#ff976a",
                        lineStyle: { color: "#ff976a", width: 1 }
                    }
                },
                areaStyle: {
                    normal: {
                        // 渐变填充色(线条下半部分)
                        color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
                            { offset: 0, color: "#ff976a" },
                            { offset: 1, color: "#ff976a00" }
                        ])
                    }
                }
            },
            {
                name: "旷课",
                smooth: false, //平滑
                type: "line",
                symbolSize: 0, //折线拐点大小
                data: [1, 3, 1, 0, 4],//纵坐标值
                itemStyle: {
                    normal: {
                        color: "#f15441", //图例颜色
                        borderWidth: 2,
                        borderColor: "#f15441",
                        lineStyle: { color: "#f15441", width: 1 }
                    }
                },
                areaStyle: {
                    normal: {
                        // 渐变填充色(线条下半部分)
                        color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
                            { offset: 0, color: "#f15441" },
                            { offset: 1, color: "#f1544100" }
                        ])
                    }
                }
            },
            {
                name: "请假",
                smooth: false, //平滑
                type: "line",
                symbolSize: 0, //折线拐点大小
                data: [5, 0, 1, 1, 6],//纵坐标值
                itemStyle: {
                    normal: {
                        color: "#0089ff", //图例颜色
                        borderWidth: 2,
                        borderColor: "#0089ff",
                        lineStyle: { color: "#0089ff", width: 1 }
                    }
                },
                areaStyle: {
                    normal: {
                        // 渐变填充色(线条下半部分)
                        color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
                            { offset: 0, color: "#0089ff" },
                            { offset: 1, color: "#0089ff00" }
                        ])
                    }
                }
            }
        ]
    });
    // 点击折线图拐点
    this.lineChart.off("click"); //先移除,再点击(这行代码是为了防止重复绑定触发点击事件)
    this.lineChart.on("click", "series.line", params => {
        this.$parent.tempData.attendanceTeacher.form = this.form;
        this.$parent.tempData.attendanceTeacher.query = {
            KC: this.KC,
            BJ: this.BJ,
            RQ: params.name,
            KCRQFW: this.KCRQFW
        };
        this.$router.push({
            path: "/attendanceTeacherHistoryDetail",
            query: this.$parent.tempData.attendanceTeacher.query
        }); //折线点点击后,可具体查看本次课程的具体签到情况。
    });
},


相关文章
|
6月前
echarts 柱状图/折线图x轴坐标间隔
echarts 柱状图/折线图x轴坐标间隔
218 0
|
6月前
|
JavaScript 应用服务中间件 nginx
【报错】nginx部署项目后Echarts折线图无法展示
在Vue3+TS+Arco项目中,打包后使用Nginx部署的Echarts折线图显示异常,报`Cannot read properties of undefined(reading 'setOption')`错误。问题源于在定义div时使用了Vue2的`$refs`语法,导致DOM元素无法正确初始化Echarts。解决方法有两种:1) 不推荐使用`document.getElementById`获取DOM并初始化Echarts;2) 推荐在Vue3中通过`ref`获取DOM,在`onMounted`中使用`echarts.init`并借助`nextTick`异步绘制数据。
152 3
|
1月前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
39 1
|
3月前
Echarts——饼图折线图柱状图相互转换
Echarts——饼图折线图柱状图相互转换
132 0
|
5月前
|
搜索推荐 数据可视化 BI
ECharts 蓝色系-荧光图标折线图01案例
ECharts 案例展示了一周内各路线数据的蓝色荧光折线图,揭示流量趋势。预览包括静态图片和动态GIF。使用ECharts 5.2.0配置图表,包含背景、网格、图例及数据。代码示例初始化图表、定义X轴类别和Y轴值,以及系列颜色。完整案例可在链接中下载。案例结合动态效果与个性化设计,增强数据可视化的吸引力。
59 0
ECharts 蓝色系-荧光图标折线图01案例
|
4月前
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
366 0
|
6月前
|
数据可视化 前端开发 定位技术
echarts 关于折线统计图常用的属性设置--超详细(附加源码)
echarts 关于折线统计图常用的属性设置--超详细(附加源码)
133 0
|
JSON 数据格式
Echarts统计图x轴实现拉伸滑动
Echarts统计图x轴实现拉伸滑动
103 1
|
6月前
设置echarts的grid、tooltip、柱状图渐变色、折线图渐变色
设置echarts的grid、tooltip、柱状图渐变色、折线图渐变色
|
1月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
52 1

热门文章

最新文章