Plotting Data

RoadRunner has a built in plot() method which can perform basic plotting. Simply call:

result = rr.simulate(0, 10, 100)
rr.plot()

If one wants more control over the data plots, one may use matplotlib directly. Assuming the simulate returns an array called result, and that the first column represents the x axis and the remaining columns the y axis, we type:

import pylab
pylab.plot (result[:,0],result[:,1:])
pylab.show()

This will bring up a new window showing the plot. To clear the plot for next time, type the command:

pylab.clf()

One may also override the built-in plot() method with a more more capable plotting routine.

Below is a simplified version of the plot() method. You may copy and write a customized version and even attach it to the RoadRunner object. The first argument is a RoadRunner object instance, and the second is a flag which tells the method to show the plot or not:

def plot(rr, show=True):

    import pylab as p

    result = self.getSimulationData()

    if result is None:
        raise Exception("no simulation result")

    # assume result is a standard numpy array

    selections = rr.timeCourseSelections

    if len(result.shape) != 2 or result.shape[1] != len(selections):
        raise Exception("simulation result columns not equal to number of selections,"
                        "likely a simulation has not been run")

    times = result[:,0]

    for i in range(1, len(selections)):
        series = result[:,i]
        name = selections[i]
        p.plot(times, series, label=str(name))

        p.legend()

    if show:
        p.show()

You can attach your plotting function to the RoadRunner object by simply setting the plot method:

def my_plot(rr, show):
    pass

import roadrunner
roadrunner.RoadRunner.plot = my_plot

Now, whenever the plot() method is called, your plot function will be the one that is invoked.