如何通过移动直线获得斜率?

时间:2019-07-17 12:28:42

标签: python excel vba plot

我想知道是否有任何可能的方法来获取我在图形上手动移动的线的斜率。所需要的只是坡度(m),我不在乎R平方等等。下图仅用于说明。

注意:应使用光标手动移动该行。

在excel中可能无法实现,但是如果您有任何想法我应该从哪里开始寻找,那将很有用!谢谢。

1 个答案:

答案 0 :(得分:2)

获得直线的实际(文字)斜率非常简单,即使直线没有暴露端点,我们也可以使用其.Top.Left.Height.Width个属性来导出这些属性,然后应用标准斜率公式:

Function GetSlope(thisLine As Shape)
Dim ret
If Not IsLine(thisLine) Then
    ret = CVErr(13)
    GoTo EarlyExit
End If

Dim x1 As Single, x2 As Single, y1 As Single, y2 As Single

With thisLine
    x1 = .Left
    x2 = .Left + .Width
    y1 = .Top
    y2 = .Top + .Height
End With

ret = (y2 - y1) / (x2 - x1)
EarlyExit:
    GetSlope = ret
End Function

Private Function IsLine(shp As Shape) As Boolean
IsLine = shp.Type = msoLine
End Function

但是(根据您实际希望在此处获得的信息,这可能会破坏交易),这是不太可能相对于绘图区域的坡度,这取决于轴的大小和比例。例如,以下图表绘制了一系列x / y坐标,斜率表示为y = 2x,而GetSlope函数给定的斜率(对于斜率大致相同的线形)返回{ {1}},这是这条线相对于其位置坐标的文字斜率。

enter image description here

似乎您可能需要进一步的技巧才能估算出绘图/比例尺中线端点的X / Y坐标(我不确定您可以实现这一精度的程度)。我认为这可以使您到达某个地点,或基本上到达某个合理的精度范围内:

0.9166661

enter image description here

另一项测试的斜率预计约为10:

enter image description here

注意::这似乎并未说明该线的“方向”,因此对于以向下倾斜度定向的线,它不会正确地给您负的倾斜度值。我不确定是否有一种简单的方法可以得出直线的方向,所以我将由您自己决定:)在这里,即使直线看起来朝下,我们也可以看到一个正斜率值:

enter image description here