Users can visualize the global quasi-potential surface right away, but we like to build in a little bit of anticipation and have users think about the local surfaces and what they expect to see in a global quasi-potential surface.
First, let's view the local quasi-potential surfaces with
QPContour(surface = eq1.local, dens = c(1000, 1000), x.bound = bounds.x, y.bound = bounds.y) QPContour(surface = eq2.local, dens = c(1000, 1000), x.bound = bounds.x, y.bound = bounds.y)
Notice that plotting contours is not very fast. We have an argument,
dens, that, when it's small, allows for faster plotting times. This argument simply subsamples the surface.
Next, looking at the stable node's surface (
eqs[3,]), you'll notice that there's not much resolution, and it looks like a large, flat basin. Well, that's not the case. The stable equilibrium is there, but it's a shallow depression that's too shallow to be captured by the color scheme and contour lines. To see the depression, you could normally add more colors (
QPContour) or add the number of contour lines, but that can be insufficient in many ways. What we did to overcome this is create an argument within
QPContour that changes the density of contour lines. Specifically, the argument
c.parm focuses the concentration of contour lines at that bottom of the basin, as the value increases from one. Try, for example, the above with
c.parm = 2 or
c.parm = 5:
QPContour(surface = eq2.local, dens = c(1000, 1000), x.bound = bounds.x, y.bound = bounds.y, c.parm = 5)
This argument will come in handy, since the quasi-potential surfaces tend to span a large range, and we're often interested in the contours at the bottom of the basins.
To visualize the global quasi-potential, one can simply take the global quasi-potential matrix from QPGlobal and use it to create a contour plot using
QPContour(surface = ex1.global, dens = c(1000, 1000), x.bound = bounds.x, y.bound = bounds.y)
That's it---you've created the global quasi-potential!
There are many different ways of visualizing the 3-dimensional data like the quasi-potential surfaces.
Probably most useful, we suggest
persp3d in package
rgl. This allows users to interact with the surface in 3 dimensions and gain a further understanding of the shape of the surface.
library("rgl") persp3d(x = ex1.global, col = "#FF5500", xlab = "X", ylab = "Y", zlab = intToUtf8(0x03A6), xlim = c(0.05, 0.3), ylim = c(0.1, 0.3), zlim = c(0, 0.01))
filled.contour are all
graphics packages that work well with 3-dimensional data like the quasi-potential surfaces. For example:
image(x = ex1.global) contour(x = ex1.global) filled.contour(x = ex1.global)
Lastly, Karline Soetaert has written a package
plot3D that has several other ways of visualizing the 3-dimensional data like the quasi-potential surfaces. For example:
persp3D(z = ex1.global, contour = F)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.