回归统计在 echarts 中的实现---在散点图中加趋势线

本文介绍如何使用ECharts和其扩展库echarts-stat.js进行回归统计分析,涵盖线性、指数、对数及多项式回归,并展示如何将回归分析结果可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回归统计在 echarts 中的实现

96 贵在随心 关注

 0.5 2019.03.13 13:55 字数 432 阅读 483评论 0喜欢 3

在做数据的统计的时候,难免会涉及到线性拟合问题,也就是回归统计问题。
接下来我们看看回归算法如何把数据分析与echarts 图表结合的.
这里我们需要借助 echarts 的一个扩展库: echarts-stat.js
ecStat 是 ECharts 的统计和数据挖掘工具。你可以把它当作一个工具库直接用来分析数据;你也可以将其与 ECharts 结合使用,用 ECharts 可视化数据分析的结果。

1、如何使用呢?

1.1 使用 npm 安装
执行命令:

npm install echarts-stat -S

1.2 直接引入

<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-stat/ecStat.min.js"></script>

1.3 d调用方式

let myRegression = ecStat.regression(regressionType, data, order);

1.4 参数说明
regressionType:回归类型(String),有四种回归算法类型:'linear', 'exponential', 'logarithmic', 'polynomial'
data:要统计的数据,是个二维数组(Array),一维数组值分别表示自变量和因变量的值。如下示例:

let data = [
    [1, 2],
    [3, 5],
    ...
 ];

order:多项式的阶数(number)。对于非多项式回归,可以忽略该参数。

1.5 返回值说明
myRegression:返回一个对象. 包括用于绘制折线图的拟合数据点 points,回归曲线的参数 parameter,以及拟合出的曲线表达式 expression。如下:

// 绘制折线图的拟合数据点
 myRegression.points = [
    [1, 2],
    [3, 4],
    ...
 ];

 // 这是线性回归到额参数,对于其它的回归类型,返回值有所不同
 myRegression.parameter = {
    gradient: 1.695,
    intercept: 3.008
 };

// 拟合曲线的表达式
 myRegression.expression = 'y = 1.7x + 3.01';

2、echarts 中的回归算法种类

回归算法根据原始输入数据集中自变量和因变量的值拟合出一条曲线,以反映它们的变化趋势。目前只支持单个自变量的回归算法。
示例数据:

data = [
    [1990, 97.50795611],
    [1991, -1.47594249],
    [1992, 100.18523178],
    [1993, 70.79915311],
    [1994, 78.57069599],
    [1995, 31.10961999],
    [1996, 256.79296329],
    [1997, -125.99480511],
    [1998, 123.06305912],
    [1999, 20.88276861],
    [2000, 83.58488798],
    [2001, -27.35862341],
    [2002, 36.12902213],
    [2003, 330.29682761],
    [2004, 81.03370443],
    [2005, 72.43589272],
    [2006, 68.20541466],
    [2007, 71.72078271],
    [2008, 30.23107631],
    [2009, 73.36549425],
    [2010, 117.4990002],
    [2011, 210.40146031],
    [2012, 31.12226507],
    [2013, 86.32869462],
    [2014, 128.90111788],
    [2015, 115.70773146]
]
    // 引入echarts
    import echarts from 'echarts'
    // 引入 echarts 拓展回归统计 echarts-stat
    let ecStat = require("echarts-stat");
    export default function getRegressionChart(chartData, chartTitle, chartId, regType, regOrder) {
        let regressionDemo = ecStat.regression(regType, chartData, regOrder);
        regressionDemo.points.sort(function(a, b) {
            return a[0] - b[0];
        });

        let option = {
            title: {
                left: "25%",
                top: "2%",
                text: chartTitle,
                textStyle: {
                    color: "#707070",
                    fontSize: 25
                }
            },
            xAxis: {
                type: "category",
                splitNumber: "7",
                splitLine: {
                    show: true
                }
            },

            yAxis: {
                type: "value",
                splitNumber: "7",
                splitLine: {
                    show: true
                }
            },
            series: [{
                    name: "line",
                    type: "line",
                    itemStyle: {
                        color: "#87CEFF"
                    },
                    data: chartData
                },
                {
                    name: "line",
                    type: "line",
                    showSymbol: false,
                    lineStyle: {
                        // type: "dashed",
                        color: "#f00"
                    },
                    data: regressionDemo.points
                }
            ]
        };
        let regressionChart = echarts.init(
            document.getElementById(chartId)
        );
        regressionChart.setOption(option, true);

2.1 线性回归

regressionChart(data, regTitle, "regression-chart", "linear", 1);

线性回归效果图

2.2 指数回归

// 测试数据
let expData = [
     [1, 4862.4],
     [2, 5294.7],
     [3, 5934.5],
     [4, 7171.0],
     [5, 8964.4],
     [6, 10202.2],
     [7, 11962.5],
     [8, 14928.3],
     [9, 16909.2],
     [10, 18547.9],
     [11, 21617.8],
     [12, 26638.1],
     [13, 34634.4],
     [14, 46759.4],
     [15, 58478.1],
     [16, 67884.6],
     [17, 74462.6],
     [18, 79395.7]
 ];
regressionChart(expData, regTitle, "regression-chart", "exponential", 1);

指数回归示例图

2.3 对数回归

regressionChart(logicData, regTitle, "regression-chart", "logarithmic", 1);

对数回归示例图

2.4 多项式回归

// 针对第一个例子做 4次多项式回归
regressionChart(data, regTitle, "regression-chart", "polynomial", 4);

··~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上别人写的参考部分  一下 自己做的趋势线 效果图

 

本文转自:https://www.jianshu.com/p/c97273a05167

ECharts是一个强大的数据可视化库,而ECharts-Stat是一个基于ECharts统计图表插件,它提供了一些高级统计分析图表的功能。散点图(Scatter Chart)在ECharts中用于展示两个变量之间的关系,每个点代表一对数值,通过颜色、大小等属性可以表示更多的信息。 指数回归线(Exponential Regression Line)通常用于描述非线性的增长趋势,ECharts-Stat可以帮助你在散点图上绘制并显示指数函数拟合的结果,这对于理解复杂的数据模式很有帮助。 线性提示(Linear Trend Line)则适用于呈现数据的趋势,特别是在线性模型下。ECharts允许你在散点图添加一条线性预测线,并显示其方程。 R平方(R-squared),也称为决定系数,是用来衡量模型解释因变量变异的程度。ECharts-Stat可能会在散点图中计算并显示这个值,它表示了模型解释的变异性占总变异性比例的百分比,越高说明模型拟合越好。 要在ECharts中创建这样的图表,你需要先安装EChartsECharts-Stat,然后配置一个包含散点图回归线和R平方的选项,例如: ```javascript var chart = echarts.init(document.getElementById('main')); chart.setOption({ series: [{ type: 'scatter', data: ..., symbolSize: function (val) { return val[2] || 5; // 指定点的大小 } }], stats: { regression: { type: 'exponential', // 设置回归类型为指数 show: true, rSquared: true // 显示R平方值 } }, tooltip: { trigger: 'item', formatter: "{a} <br/>{b}: {c}% ({d})" // 自定义提示信息,包含R平方 } }); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值