Visualization with Matplotlib¶
Matplotlib is a popular graphing package for python and works smoothly with myokit.
Matplotlib has its own documentation. For convenience, the most important commands are listed here:
figure()
- Creates a new figure
subplot(321)
- Indicates the next figure will be 1st part of a subplot containing 3 rows
and 2 columns. An alternative syntax is
subplot(3,2,1)
. (docs) plot(x,y)
Creates a plot of y versus x
The type of marker can be set with the third positional argument:
plot(x, y, '*')
Label, color and line width can be set with:
plot(x, y, label='y versus x', color='blue', lw=3)
show()
- Displays the created plots
figure.savefig(filename)
- Saves a figure to a file. (docs)
title(text)
- Sets a title
suptitle(t)
- Adds a title above the normal title
axis([xmin, xmax, ymin, ymax])
Sets the limits for the currents axes. Make sure to use axis with an ‘i’! The
axes
command creates a new subplot.Run without arguments to obtain to current axis.
xlim(min, max), ylim(min, max)
- Limits can be set individually with xlim() and ylim(). Call without arguments to obtain the current limits.
legend()
Using plot(x,y,label=’abc’) you can create labelled plots. The
legend()
commands will use these to build a legend.The legend’s location can be set with the
loc
keyword and string values such as “upper right”, “left”, “lower” or “center”. To create multi-column legends, use the keywordncol
, for examplencol=2
.grid()
- Toggles the grid ub the current subplot. Use
True
orFalse
to set the state of the grid explicitly. figtext(x, y, s)
- Add text s at coordinates x and y (both in range [0..1])
text(x, y, s)
- Add text at plotted coordinates x and y
loglog(x,y)
- Using loglog, semilogx or semilogy instead of plot() you can create plots on logarithmic axes.
quiver(x,y,u,v)
Creates vector plots:
x = linspace(0,10,11) y = linspace(0,15,16) (X,Y) = meshgrid(x,y) u = 5*X v = 5*Y quiver(X,Y,u,v,angles='xy',scale=1000,color='r')
xlabel(s), ylabel(s)
- Add or set label on x or y axis
Customizing the axes¶
To further customize the axis, use the axes object returned by the subplot
Example¶
The following is an example plot script for running in the GUI:
[[script]]
import myokit
import matplotlib.pyplot as plt
# Get model & protocol from magic methods
m = get_model()
p = get_protocol()
# Create simulation
s = myokit.Simulation(m, p)
# Run simulation
d = s.run(1000)
# Display the result
t = d['environment.t']
v = d['membrane.V']
plt.plot(t, v)
plt.grid(True)
plt.title('Membrane potential versus time')
plt.show()