Copy link to clipboard
Copied
Copy link to clipboard
Copied
Copy link to clipboard
Copied
Copy link to clipboard
Copied
In case anyone is looking, here's something simple I threw together for linear best fit:
<!--- The min setting is a preference based on how you want the data to be displayed. --->
<!---<cfset min = arrayMin(grabData["value"]) - 5>--->
<cfset min = 0>
<cfset max = ceiling(arrayMax(grabData["value"])) + 1>
<cfset n = grabData.recordCount>
<cfset sum_x = 0>
<cfset sum_x2 = 0>
<cfset sum_xy = 0>
<cfloop from="1" to="#grabData.RecordCount#" index="i">
<cfset sum_x = sum_x + i>
<cfset sum_xy = (i*grabData.value) + sum_xy>
<cfset sum_x2 = sum_x2 + (i*i)>
</cfloop>
<cfset sum_y = arraySum(grabData["value"])>
<cfset slope = round(((n*sum_xy) - (sum_x*sum_y))/((n*sum_x2) - (sum_x*sum_x)))>
<cfset intercept = round((sum_y - (slope*sum_x))/n)>
<cfset best_fit = QueryNew("id, value")>
<cfloop from="1" to="#grabdata.RecordCount#" index="i">
<cfset queryAddRow(best_fit)>
<cfset value = round((slope*i) + intercept)>
<cfset QuerySetCell(best_fit, "id", grabData.xlabel)>
<cfset QuerySetCell(best_fit, "value", value)>
</cfloop>
<cfchart scalefrom="#min#" scaleto="#max#" title="#GrabDatapointInfo.label#" format="jpg" chartHeight="450" chartwidth="500" xaxistitle="Month/Year">
<cfchartseries type="line" query="best_fit" valuecolumn="value" itemcolumn="id"/>
<cfchartseries type="line" query="grabData" valuecolumn="value" itemcolumn="xlabel"/>
</cfchart>
Copy link to clipboard
Copied