- Fork (copy) PyClaw's state and solution objects to griddle
- Fork (copy) PyClaw's file IO to griddle
- Move griddle repo to the Clawpack organization on Github
- Modify all PyClaw examples to rely on griddle instead
- Make other Clawpack projects rely on Griddle instead of PyClaw
- Remove geometry, state, solution, and IO from PyClaw
Griddle deals with data fields on collections of mapped, structured grids. It enables reading, writing, and plotting of such data, including time series. It interfaces to:
- data structures: numpy and petsc4py (and in the future, pyboxlib)
- file formats: ASCII text, hdf5
- plotting tools: matplotlib, IPython notebook, yt
The main data structure is a Solution.
Griddle.plot
facilitates plotting of data fields, and especially time series
of data fields, on collections of mapped, structured grids.
It is largely an adaptation of clawpack.visclaw
.
For examples, see this IPython notebook.
The main output functionalities are:
-
Plot figures on screen or in the notebook. To plot a particular frame:
griddle.plot_frame(plot_spec, frame_num)
-
Plot an animation in the IPython notebook:
griddle.animate(plot_spec)
-
Write image files to disk
griddle.write_plots(plot_spec,path='./_plots/',file_format='png')
-
Launch an interactive plotting command loop:
ip = griddle.Iplotsol(plot_spec)
ip.plotloop()
-
Web galleries of plots (using sigal):
griddle.make_plot_gallery(plot_spec)
The user must provide a plot_spec
, which is a list of Python dictionaries.
For examples, see griddle/test.py
.
Each dict must specify the data to be plotted in one of the following ways:
plot_spec[i]['data']
: a list ofSolution
objectsplot_spec[i]['data_path']
: a directory containing Solution files
Each item must specify which values to plot in one of the following ways:
plot_spec[i]['field'] = j
wherej
is the index of the field (an integer)plot_spec[i]['field'] = fun
wherefun
is a function that takes a State as argument and returns the computed field.
Each item must specify the type of plot to be made, via the key
plot_type
. The following plot types are currently supported:
- 1D data:
- 'line' : line or scatter plot for 1D data
- 'fill_between'
- 2D data:
- 'pcolor'
- 3D data:
- 'yt_slice' : a yt.SlicePlot
Other properties may be specified for each item in plot_spec
:
- 'name' : a name for the item, to be used in the axis title and file directory name.
- 'axes' : a matplotlib axes object on which to place the item
- 'plot_args' : a dictionary of additional arguments to be passed to the plotting function. For instance, for line plots one may pass 'linestyle', 'linewidth', 'marker', etc.
- 'axis_settings' : these will be applied to the axes object on which the item is plotted.
- 'show_patch_boundaries' : to outline patch boundaries on pcolor plots of AMR data.
Some of the key differences are:
- visclaw uses a hierarchical plot specification: figures->axes->items, whereas griddle uses a flat list of items, each of which can be associated with a particular set of axes by the user
- griddle currently allows plotting with yt as well as matplotlib