version 1.9 changes

Rolling update of features / bug fixes

1. Vector polar plots

Vector polar plots introduced. Use the pts option to vect when doing a stereographic polar vector plot to interpolate the grid to be uniformly spaced when viewed.

Done

2. Change documentation web page location

Done

3. Add orography / bathymetry colour scales

Done

4. Change cfplot to cf-plot

Package renamed to cf-plot to fit in with cf-python and cf-view.

Done

5. Change web docs to github

Web documents location changed to http://ajheaps.github.io/cf-plot. setup.py etc references changed accordingly.

Done

6. Add plot spacing options to gopen

Add hspace and wspace plot spacing options to gopen.

Done

7. lineplot - -assing non-CF data

Add options so that passing of non-CF data to lineplot works.

Done

8. vect - turn off vector key

Add show_key option to vect to allow turning off of vector key.

Done

9. cscale - colour maps not referenced correctly when doing a local install

pip install --user cf-plot

Doesn't allow changing of colour maps.

Done

10. lineplot - add axis labelling that overrides any CF information

Add axis labelling that overrides any CF information in lineplot.

Done

11. gclose - plots not closed properly

Add plot.close() to gclose routine to properly close each plot when it is finished.

Done

12. levs - change in floating point levels calculation

Floating point levels were calculated using numpy.arange and this can sometimes give stange contour levels. For example,


np.arange(-0.2,0.2,0.04)
array([ -2.00000000e-01, -1.60000000e-01, -1.20000000e-01,
-8.00000000e-02, -4.00000000e-02, 2.77555756e-17,
4.00000000e-02, 8.00000000e-02, 1.20000000e-01,
1.60000000e-01])

Using np.linspace(-0.2,0.2,11) gives a much neater set of levels and the floating point calculation of levels was changed to adopt this method.

Done

13. levs - cfp.levs() fails to reset colorbar extensions

cfp.levs() failed to reset colorbar extensions.

Done

14. Change of name for some colour scales

Colour scales with plus and minus in them cause issues in cfview. These colour scales have been renamed with the plus and minus changed to an underscore.

Done

15. con - negative_linestyle and zero_thick issues

Recent changes in the 1.5.x version of Matplotlib causes issues with the con routine negative_linestyle and zero_thick options. con was changed to the new Matplotlib way of doing these.

Done

16. con - xlog / log specification

Amended the xlog and ylog specification so that it now accpets True as well as 1 to give a log plot.

Done

17. con, vect added axis labelling commands

Added xticks, xticklabels, yticks, yticklabels, xlabel, ylabel to con and vect to control axis labelling. Also added axis, axis, yaxis to control whether axes are plotted.

Done

18. con - bug in color scheme

When turning off a colorbar with colorbar=None in the con routine the extension colors were then out of alignment.

Fixed

19. vect - added vertical log scale

Added optional vertical log scale to the vect routine.

Done

20. con - added time vs height plots

Added time vs height plots.

Done

21. colour scales - adjust name

One of the colour scales had an incorrect extension and this caused an issue in cf-view.

Done

22. Plot blocking resolved

If the display command from ImageMagick is available this is now used in conjunction with subprocess in preference to build-in Matplotlib viewer. This gets around the problem of a plot blocking the command prompt preventing further plots from being made. Using cfp.setvars(viewer='matplotlib') will revert to using the built-in matplotlib picture viewer.

Done

23. timeaxis routine introduced

The timeaxis routine takes a time axis and returns a sensible set of tick positions and labels. This is an internal routine that is used in Hovmuller and graph plots.

Done

24. Multiple hovmuller plot calls produce incorrect pictures

Subsequent plots after the first hovmuller plot call produce incorrect pictures.

Fixed

25. Added time axis options to setvars

Added time axis tick marks and labelling options to setvars. Once set these plot options are used for all subsequent time axes.

tspace_year=None - time axis spacing in years
tspace_month=None - time axis spacing in months
tspace_day=None - time axis spacing in days
tspace_hour=None - time axis spacing in hours
Done

26. Time axes bugfix

Bugfix for an issue in time axes.

Done

27. Add axis label and alignment options to setvars

Add axis label and alignment options to setvars:

xtick_label_rotation=0 - rotation of xtick labels
xtick_label_align='center' - alignment of xtick labels
ytick_label_rotation=0 - rotation of ytick labels
ytick_label_align='right' - alignment of ytick labels
Done

28. Bugfix in gset

Bugfix in gset for recent time axis changes.

Fixed

29. Bug in lineplot

Lineplot is now more logical and takes a CF-field (f) as the base use. The other use is not to pass f but to have x=x and y=y. This allows x vs y plots and y vs x plots.

Fixed

30. con - filled contours and irregular contour levels

Selecting irregular contour levels with cfp.levs(manual=manual) and filled contours gives a slight colour scale mismatch. This was resolved by calculating a normalization array: plotvars.norm=matplotlib.colors.BoundaryNorm(boundaries=plotvars.levels, ncolors=ncolors)

Fixed

31. con - blockfill plots

Slight bug in blockfill colours at the top end of the drawn colours.

Fixed

32. setvars / lineplot - legend text size and weight

Two new options were added to cfp.setvars to change the font size and weight for the legend in lineplot:

legend_text_size=None - legend text size legend_text_weight=None - legend text weight

Added

33. levs - changed level generation scheme

The level generation scheme in levs when the user passes min, max, step has been changed. It is now using Neil Massey's scheme:

If min, max, step are integers: levs = ((((np.arange(min, max+step*1e-10, step, dtype=np.float64)*1e10)).astype(np.int64)).astype(np.float64)/1e10).astype(np.int)

else: levs = (((np.arange(min, max+step*1e-10, step, dtype=np.float64)*1e10)).astype(np.int64)).astype(np.float64)/1e10

Changed

34. gvals - changed scheme for step >= 1

gvals changed to use more sensible steps when step >= 1.

steps are now 1, 2, 5, 10, 20, 25, 50, 100, 200, 250, 500, 1000, 2000, 2500, 5000, 10000, 20000, 25000, 50000, 100000, 200000, 250000, 500000, 1000000.

If the number of steps from the above in (data max - data min) is greater than 12 then this step is used.

Changed