[a9d5684] | 1 | # This program is public domain |
---|
| 2 | """ |
---|
| 3 | Configure plotter for plottools. |
---|
| 4 | |
---|
| 5 | This must be imported first in __init__.py for plottools. |
---|
| 6 | |
---|
| 7 | If your application uses matplotlib outside plottools, then |
---|
| 8 | please do the following at the start of your application: |
---|
| 9 | |
---|
| 10 | # Select matplotlib version and backend |
---|
[79492222] | 11 | import sas.plottools.config |
---|
[a9d5684] | 12 | |
---|
| 13 | Note that plottools requires particular versions of matplotlib |
---|
| 14 | and a particular backend. As of this writing it is the WXAgg |
---|
| 15 | backend for matplotlib>=0.98. |
---|
| 16 | |
---|
| 17 | The plottools package uses pkg_resources if available to select |
---|
| 18 | the correct version of matplotlib. If you need multiple matplotlib |
---|
| 19 | versions in your path, be sure to use "easy_install -m" for all |
---|
| 20 | of them. If a version is installed without "-m" that does not |
---|
| 21 | meet the requirements, then pkg_resources.require() will fail, |
---|
| 22 | even if you have installed a suitable version with "-m". In this |
---|
| 23 | case you will need to fix up your site-packages directory, |
---|
| 24 | probably by removing site-packages/matplotlib and the associated |
---|
| 25 | egg file for that version, and reinstalling with "-m". You may |
---|
| 26 | also need to edit site-packages/easy-install.pth. |
---|
| 27 | """ |
---|
| 28 | import sys |
---|
| 29 | |
---|
| 30 | __all__ = [] |
---|
| 31 | |
---|
| 32 | plot_version = "0.98" |
---|
| 33 | plot_backend = "WXAgg" |
---|
| 34 | |
---|
| 35 | # Sort out matplotlib version |
---|
| 36 | import matplotlib |
---|
| 37 | try: |
---|
| 38 | import pkg_resources |
---|
| 39 | pkg_resources.require("matplotlib>=" + plot_version) |
---|
| 40 | except: |
---|
| 41 | from distutils.version import LooseVersion as Version |
---|
| 42 | if Version(matplotlib.__version__) < Version(plot_version): |
---|
| 43 | msg = "Matplotlib version must be %s or newer" % (plot_version, ) |
---|
| 44 | raise ImportError(msg) |
---|
| 45 | |
---|
| 46 | # Sort out matplotlib backend |
---|
| 47 | #import matplotlib |
---|
| 48 | if 'matplotlib.backends' not in sys.modules: |
---|
| 49 | # if no backend yet, be sure to use the correct one |
---|
| 50 | matplotlib.use(plot_backend) |
---|
| 51 | elif matplotlib.get_backend() != plot_backend: |
---|
| 52 | # if a backend has already been selected, make sure it is the correct one. |
---|
| 53 | raise ImportError("Matplotlib not using backend " + plot_backend) |
---|
[cafa75f] | 54 | |
---|
| 55 | # set global plot style |
---|
| 56 | param = 'legend.handletextpad' |
---|
| 57 | if param not in matplotlib.rcParams: param = 'legend.handletextsep' |
---|
| 58 | matplotlib.rcParams[param] = 0.05 |
---|
| 59 | matplotlib.rcParams['legend.numpoints'] = 1 |
---|
[d3d67f0] | 60 | |
---|
| 61 | # this should happen after initial matplotlib configuration |
---|
| 62 | from .toolbar import NavigationToolBar |
---|
| 63 | from matplotlib.backends import backend_wxagg |
---|
| 64 | backend_wxagg.NavigationToolbar2WxAgg = NavigationToolBar |
---|
| 65 | |
---|
| 66 | # CRUFT: bumps 0.7.5.6 and older uses wrong toolbar |
---|
| 67 | backend_wxagg.NavigationToolbar2Wx = NavigationToolBar |
---|