在x轴上具有日期的图形的VB梯度

时间:2014-12-26 13:46:27

标签: vb.net date graph gradients

嗨,我是新来的,所以,如果我做错了,请告诉我。

我正在使用Microsoft Visual Studio 2013,并在一个图表区域中有一个包含4个系列的图表。这些系列中的2个包含数据点,另外两个是相应的趋势线。我需要趋势线的渐变来预测我的代码中的未来Y值,但是当我尝试使用线性回归以编程方式/数学方式进行此操作时,我得到了溢出错误,因为我在x轴上使用了日期的数据类型对于数学,当我将x-dif作为等式底部的平方时,它产生了一个非常大的数字。

有没有人找到其他工作? 产生错误的位是lngCycleXTakeXAverageSquaredTotal和lngRunXTakeXAverageSquaredTotal部分

Dim i As Integer
    Dim lngRunXTotal As Long
    Dim dblRunYTotal As Double
    Dim lngCycleXTotal As Long
    Dim dblCycleYTotal As Double
    Dim lngRunXAverage As Long
    Dim dblRunYAverage As Double
    Dim lngCycleXAverage As Long
    Dim dblCycleYAverage As Double
    Dim lngRunXYTakeAveragesTotal As Long
    Dim lngRunXTakeXAverageSquaredTotal As Long
    Dim lngCycleXYTakeAveragesTotal As Long
    Dim lngCycleXTakeXAverageSquaredTotal As Long
    Dim dblRunGrad As Double
    Dim dblCycleGrad As Double
    Dim dblRunYIntercept As Double
    Dim dblCycleYIntercept As Double
    Dim dblRunYMin As Double
    Dim dblRunYMax As Double
    Dim datRunXMin As Date
    Dim datRunXMax As Date
    Dim dblCycleYMin As Double
    Dim dblCycleYMax As Double
    Dim datCycleXMin As Date
    Dim datCycleXMax As Date




    For i = 0 To intRunningRecordsCatch - 1
        lngRunXTotal += CDate(dgvRunningSpeeds.Rows(i).Cells(0).Value).ToFileTime
        dblRunYTotal += dgvRunningSpeeds.Rows(i).Cells(1).Value
    Next
    lngRunXAverage = lngRunXTotal / intRunningRecordsCatch
    dblRunYAverage = dblRunYTotal / intRunningRecordsCatch
    i = 0
    For i = 0 To intCyclingRecordsCatch - 1
        lngCycleXTotal += CDate(dgvCyclingSpeeds.Rows(i).Cells(0).Value).ToFileTime
        dblCycleYTotal += dgvCyclingSpeeds.Rows(i).Cells(1).Value
    Next
    lngCycleXAverage = lngCycleXTotal / intCyclingRecordsCatch
    dblCycleYAverage = dblCycleYTotal / intCyclingRecordsCatch

    For i = 0 To intRunningRecordsCatch - 1
        lngRunXYTakeAveragesTotal += ((CDate(dgvRunningSpeeds.Rows(i).Cells(0).Value).ToFileTime - lngRunXAverage) * (dgvRunningSpeeds.Rows(i).Cells(1).Value - dblRunYAverage))
        **lngRunXTakeXAverageSquaredTotal += (CDate(dgvRunningSpeeds.Rows(i).Cells(0).Value).ToFileTime - lngRunXAverage) * (CDate(dgvRunningSpeeds.Rows(i).Cells(0).Value).ToFileTime - lngRunXAverage)**
    Next
    dblRunGrad = lngRunXYTakeAveragesTotal / lngRunXTakeXAverageSquaredTotal

    For i = 0 To intCyclingRecordsCatch - 1
        lngCycleXYTakeAveragesTotal += ((CDate(dgvCyclingSpeeds.Rows(i).Cells(0).Value).ToFileTime - lngCycleXAverage) * (dgvCyclingSpeeds.Rows(i).Cells(1).Value - dblCycleYAverage))
        lngCycleXTakeXAverageSquaredTotal += (CDate(dgvCyclingSpeeds.Rows(i).Cells(0).Value).ToFileTime - lngCycleXAverage) * (CDate(dgvCyclingSpeeds.Rows(i).Cells(0).Value).ToFileTime - lngCycleXAverage)
    Next
    dblCycleGrad = lngCycleXYTakeAveragesTotal / lngCycleXTakeXAverageSquaredTotal

    dblRunYIntercept = dblRunYTotal - (dblRunGrad * lngRunXTotal)
    dblCycleYIntercept = dblCycleYTotal - (dblCycleGrad * lngCycleXTotal)

    datRunXMin = datMinDateCatch
    dblRunYMin = (datMinDateCatch.ToFileTime * dblRunGrad) + dblRunYIntercept
    datRunXMax = DateTime.Now
    dblRunYMax = (DateTime.Now.ToFileTime * dblRunGrad) + dblRunYIntercept
    datCycleXMin = datMinDateCatch
    dblCycleYMin = (datMinDateCatch.ToFileTime * dblCycleGrad) + dblCycleYIntercept
    datCycleXMax = DateTime.Now
    dblCycleYMax = (DateTime.Now.ToFileTime * dblCycleGrad) + dblCycleYIntercept

    chaSpeedsGraph.Series("Running Line of Best Fit").Points.AddXY(datRunXMin, dblRunYMin)
    chaSpeedsGraph.Series("Running Line of Best Fit").Points.AddXY(datRunXMax, dblRunYMax)
    chaSpeedsGraph.Series("Cycling Line of Best Fit").Points.AddXY(datCycleXMin, dblCycleYMin)
    chaSpeedsGraph.Series("Cycling Line of Best Fit").Points.AddXY(datCycleXMax, dblCycleYMax)

0 个答案:

没有答案