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 |
---|
11 | import sas.plottools.config |
---|
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) |
---|
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 |
---|
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 |
---|