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.