The recent FaceSpan 5.0d42 build includes a graphing plugin based on Chad Weider’s GraphX framework. Chad’s framework provides three graphing views: curve, histogram and scatter plot.

As always when creating FaceSpan plugins from Cocoa frameworks, the tough part is converting the Cocoa APIs into a simple to use AppleScript syntax. In the case of these graphing views, I have substituted the ‘Data Source’ based APIs with a simple event for the curve view, and a value property that accepts a list of values to be graphed (a list of reals for the histogram and a list of x-y points for the scatter plot).

Here’s how it all looks running in a FaceSpan-built application:

graphx.jpg

The code for the curve view looks like this:

--
--	CT curve uses this event handler to get the data to be graphed
--
on CT get y value theCTCurve for theXValue
	return theXValue * theXValue * theXValue + 1.0
end CT get y value

The event is called repeatedly by the curve view to generate the data to be graphed.

The code for the histogram looks like this:

on initialize theResponder
	--	CT histogram needs a list of reals to graph
	set theData to {}

	repeat with i from (x axis minimim) to (x axis maximum)
		set end of theData to random number from 1 to 10
	end repeat
	set value to theData

end initialize

Here I simply generate a random series of values and assign them to the view’s value property. The plugin does the rest.

And finally, the code for the scatter plot looks like this:

on initialize theResponder
	--	CT scatter plot requires a list of points (x, y pairs) to graph...

	set yValue to 1.0
	set theData to {}

	repeat with i from (x axis minimim) to (x axis maximum)
		set end of theData to {i, yValue}
		set yValue to yValue + (random number from 0 to 2.0)
	end repeat
	set value to theData

end initialize

Again, I simply generate a random series of point values and assign them to the view’s value property. The plugin does the rest.

The sources for the plugin are included in the FaceSpan 5.0d42 SDK.