【问题标题】:Adding regressing equation to a scatter plot将回归方程添加到散点图中
【发布时间】:2018-05-25 10:04:46
【问题描述】:

我有以下图表工作:

var Grade_access = c3.generate({
    bindto: '#grade_access',
    data: {
        url: 'grades_access.csv',
        x: 'Access_grade',
        types: {
            Grade:'scatter',
            Regression: 'line'
        },
    },
    axis: {
        y: {
        label: {
            text: "Average grade",
            position: "outer-middle"
        },
        min: 1,
        max: 9
        },
        x: {
        label: {
            text: "Access grade PAU",
            position: "outer-center"
        },
        min: 9,
        max: 14
        }
    },
    size: {
        height: 400,
        width: 800
    },
    zoom: {
        enabled: true
    },
    legend: {
        show: true,
        position: 'inset',
        inset: {
        anchor: 'top-right',
        x: 20,
        y: 300
        }
    }
})

document.getElementById("equation").innerHTML = "Grade = " + 2 + "·x + " + 1;

grade_access.csv 如下所示:

Access_grade,Chemistry I,Regression
9.85,3.8,4.54
10.64,5.0,5.31
10.0,4.0,4.69
10.92,5.4,5.58
11.69,5.5,6.33
11.79,8.0,6.43
11.03,6.3,5.69
10.47,5.0,5.14
10.1,5.6,4.78
12.13,8.5,6.76
11.94,6.4,6.57
10.96,6.7,5.62
10.45,5.9,5.12
10.45,5.7,5.12
12.62,7.7,7.24
10.19,5.0,4.87

但我想改变两点来改进它:

  • 避免蓝色的点与一条线合并(我只希望橙色的点合并以创建回归线)
  • 显示回归线的真实方程(现在我编了系数:2 和 1 不是真实的)

有什么帮助吗?提前致谢!

【问题讨论】:

  • 为什么不直接检查path 行并使用css 隐藏?此外,将 Grade 更改为 'Chemistry I' 会给你一个分散的,然后你不必使用 css 显式隐藏它。
  • 谢谢!但是名称 Chemistry I 正在随时间更改名称(动态 csv 文件),您知道如何在不传递名称的情况下将其称为第一行的第二个元素吗? @AdityaK
  • 还有显示回归的任何想法吗? @AdityaK

标签: d3.js charts regression scatter-plot c3.js


【解决方案1】:

要隐藏连接蓝点的线,您可以检查path 元素并使用css 隐藏类,或者将Grade 更改为Chemistry I

由于您的回归值已经计算完毕,因此计算系数变得非常容易。

var d1 = data[0];
var d2 = data[1];
var b = (1-(d2['Regression']/d1['Regression']))/((d1['Access_grade']-d2['Access_grade'])/d1['Regression']);
var a = d1['Regression'] - (b * d1['Access_grade']);

我取了前两个数据点,然后就像求解线性方程组一样。

这是你的plunker

【讨论】:

  • 谢谢! @AdityaK回归看起来不错,但我不明白为什么如果直线斜率为正,系数为负...而且,我不能将等级更改为化学I,因为化学I是此csv中列的标题,但csv随着时间的推移会发生变化,我希望图表能够自行读取列的标题......有什么想法吗?
  • @MTT 你知道在这种特殊情况下系数应该是多少吗?我不知道我计算的是否正确。
  • 我已经计算出正确的系数了!仅是数学错误...有关如何访问随时间变化的列名称的任何帮助? (化学 I,微积分 I...)
  • 会变成什么?更改的列名最后会带有I 吗?
  • 并非总是...该列可以具有的不同名称可以是:微积分 I、几何、微积分 II、化学 I、线性代数...名称始终出现在第二个标题上csv文件的列
猜你喜欢
  • 2013-05-05
  • 2016-11-14
  • 1970-01-01
  • 2015-01-27
  • 2016-11-01
  • 2017-03-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
相关资源
最近更新 更多