PlasmaCalcs.plotting.faceplot.FaceplotPlotElement
- class PlasmaCalcs.plotting.faceplot.FaceplotPlotElement(coords, data, *, ax=None, xlabel='x', ylabel='y', zlabel='z', add_colorbar=True, **kw_super)
Bases:
MoviePlotElement3 plots on 3 faces of a box in 3D.Faceplot.__init__ will make these plots.Troubleshooting colors? Try providing vmin, vmax, & levels, explicitly!- coords: dictlike with keys ‘x’, ‘y’, ‘z’
- 1D coordinate arrays along each dimension.
- data: dictlike with keys ‘x_y’, ‘x_z’, ‘y_z’
- 2D arrays of data to plot on the faces.E.g. ‘x_z’ data will go on the x-z face.
- ax: None or axes with 3d projection.
- e.g. fig.add_subplot(1,1,1, projection=’3d’)if None, use plt.gca() if current axes exist, else make new axes.
Additional kwargs control settings for the plot:- faceplot_view_angle: UNSET, None, or 3-tuple of numbers (default: UNSET)
- viewing angle for 3D faceplots, as (elevation, azimuth, roll).UNSET –> use DEFAULTS.PLOT.FACEPLOT_VIEW_ANGLE (default: (-160, 30, 0)).None –> use matplotlib defaults.
- faceplot_edge_kwargs: UNSET, None, or dict (default: UNSET)
- kwargs for edge lines in 3D faceplots.UNSET –> use DEFAULTS.PLOT.FACEPLOT_EDGE_KWARGS (default: {‘color’: ‘0.4’, ‘linewidth’: 1, ‘zorder’: 1000.0}).None –> don’t plot edge lines.empty dict –> use matplotlib defaults.
- faceplot_axes_zoom: UNSET or number>0 (default: UNSET)
- zoom for faceplot axis. matplotlib default is zoom=1.UNSET –> use DEFAULTS.PLOT.FACEPLOT_AXES_ZOOM (default: 1.0).
- aspect3d: UNSET, None, str, 3-tuple of numbers, or 4-tuple of numbers (default: UNSET)
- aspect ratio for 3D plots.UNSET –> use DEFAULTS.PLOT.ASPECT3D (default: equal).str –> ‘auto’ or ‘equal’tuple of 3 numbers –> (x aspect, y aspect, z aspect)tuple of 4 numbers –> (1, x multiplier, y multiplier, z multiplier);multiplier multiplies aspect determined by data lengths.
any of these kwargs for ax.contourf:‘vmin’, ‘vmax’, ‘levels’, ‘cmap’,any of these kwargs for ax.set:‘xlabel’, ‘ylabel’, ‘zlabel’, ‘xlim’, ‘ylim’, ‘zlim’,‘xticks’, ‘yticks’, ‘zticks’, ‘xticklabels’, ‘yticklabels’, ‘zticklabels’Note the defaults for ‘xlabel’, ‘ylabel’, ‘zlabel’ will be ‘x’, ‘y’, ‘z’.- add_colorbar: bool
- whether to self.colorbar() during __init__.
- colorbar_kw: unset or dict (default: UNSET)
- any additional kwargs for plt.colorbar.
These attrs of self will be created/updated during init (here, face=’x_y’, ‘x_z’, or ‘y_z’):meshgrids: {face: {x: 2d array of x values at face} for x in face} coord_lims: {x: [min, max] for x in ‘x’, ‘y’, ‘z’} data_lims: {‘all’: [min, max], **{face: [min, max]} } ax: the axes object to plot on; create if needed. faces: {face: the mpl_toolkits.mplot3d.art3d.QuadContourSet3D plotted on this face} edges: {x: the mpl_toolkits.mplot3d.art3d.Line3D plotted at x=0. x=’x’, ‘y’ or ‘z’}
To view or adjust plot settings in self, see self.plot_settings, or help(self.plot_settings).- __init__(coords, data, *, ax=None, xlabel='x', ylabel='y', zlabel='z', add_colorbar=True, **kw_super)
Methods
__init__(coords, data, *[, ax, xlabel, ...])colorbar(**kw_plt_colorbar)from_dataset(ds, **kw)init_all()init_ax()update_data(data)Attributes
- colorbar(**kw_plt_colorbar)
- add a colorbar to the figure. sets self.cbar = Colorbar object, and returns it.Troubleshooting colors? Try providing vmin, vmax, & levels, explicitly!
- property fig
- figure containing this faceplot.
- classmethod from_dataset(ds, **kw)
- create Faceplot from an xarray.Dataset.
Equivalent: cls(ds.coords, ds, **kw)
- init_all()
- call all relevant init_* methods.
- init_ax()
- initialize ax for self. returns self.ax
- init_coord_lims()
- initialize self.coord_lims based on self.coords.self.coord_lims = {x: [min, max] for x in ‘x’, ‘y’, ‘z’}returns self.coord_lims.
- init_data_lims()
- initialize self.data_lims based on self.data.data_lims = {‘x_y’: [min, max] of data[‘x_y’],‘x_z’: [min, max] of data[‘x_z’],‘y_z’: [min, max] of data[‘y_z’],‘all’: [min, max] of all data,}returns self.data_lims.
- init_edges()
- initialize the edges on self.ax; actually plot the edges.stores plotted objects in self.edges & returns self.edges.edges will not be plotted if self.plot_settings.get(‘faceplot_edge_kwargs’) is None.
- init_faces()
- initialize the faces on self.ax; actually plot the data.stores plotted objects in self.faces & returns self.faces.
- init_meshgrids()
- initialize self.meshgrids based on coords from self.coords.self.meshgrids = {‘x_y’: {‘x’: 2d array of x coords in x_y plot,‘y’: 2d array of y coords in x_y plot},‘x_z’: {‘x’: 2d array of x coords in x_z plot,‘z’: 2d array of z coords in x_z plot},‘y_z’: {‘y’: 2d array of y coords in y_z plot,‘z’: 2d array of z coords in y_z plot},}returns self.meshgrids.
- init_viewing()
- initialize view-related things: labels, viewing angle, aspect ratio, etc.
- update_data(data)
- updates the data on the plot to match the data provided here.
- data: dictlike with keys ‘x_y’, ‘x_z’, ‘y_z’
- 2D arrays of data to plot on the faces.E.g. ‘x_z’ data will go on the x-z face.
returns the list of updated face artist objects.