You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(115) |
Aug
(120) |
Sep
(137) |
Oct
(170) |
Nov
(461) |
Dec
(263) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(120) |
Feb
(74) |
Mar
(35) |
Apr
(74) |
May
(245) |
Jun
(356) |
Jul
(240) |
Aug
(115) |
Sep
(78) |
Oct
(225) |
Nov
(98) |
Dec
(271) |
2009 |
Jan
(132) |
Feb
(84) |
Mar
(74) |
Apr
(56) |
May
(90) |
Jun
(79) |
Jul
(83) |
Aug
(296) |
Sep
(214) |
Oct
(76) |
Nov
(82) |
Dec
(66) |
2010 |
Jan
(46) |
Feb
(58) |
Mar
(51) |
Apr
(77) |
May
(58) |
Jun
(126) |
Jul
(128) |
Aug
(64) |
Sep
(50) |
Oct
(44) |
Nov
(48) |
Dec
(54) |
2011 |
Jan
(68) |
Feb
(52) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1
|
2
(2) |
3
(4) |
4
(4) |
5
(2) |
6
(2) |
7
(6) |
8
(4) |
9
(1) |
10
(1) |
11
(2) |
12
|
13
(1) |
14
(5) |
15
|
16
(3) |
17
(4) |
18
(8) |
19
(4) |
20
(2) |
21
|
22
|
23
(2) |
24
(2) |
25
(1) |
26
|
27
(3) |
28
(2) |
29
(2) |
30
(1) |
31
(6) |
|
|
|
|
Revision: 7019 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7019&view=rev Author: mdboom Date: 2009年03月31日 17:59:53 +0000 (2009年3月31日) Log Message: ----------- Merged revisions 7018 via svnmerge from https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_98_5_maint ........ r7018 | mdboom | 2009年03月31日 13:47:27 -0400 (2009年3月31日) | 2 lines Fix putmask update -- use np.ma.filled instead. ........ Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/transforms.py Property Changed: ---------------- trunk/matplotlib/ trunk/matplotlib/doc/pyplots/README trunk/matplotlib/doc/sphinxext/gen_gallery.py trunk/matplotlib/doc/sphinxext/gen_rst.py trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py Property changes on: trunk/matplotlib ___________________________________________________________________ Modified: svnmerge-integrated - /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7016 + /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7018 Modified: svn:mergeinfo - /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 + /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018 Property changes on: trunk/matplotlib/doc/pyplots/README ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 + /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018 Property changes on: trunk/matplotlib/doc/sphinxext/gen_gallery.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 + /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018 Property changes on: trunk/matplotlib/doc/sphinxext/gen_rst.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 + /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 + /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 + /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 + /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016,7018 Modified: trunk/matplotlib/lib/matplotlib/transforms.py =================================================================== --- trunk/matplotlib/lib/matplotlib/transforms.py 2009年03月31日 17:47:27 UTC (rev 7018) +++ trunk/matplotlib/lib/matplotlib/transforms.py 2009年03月31日 17:59:53 UTC (rev 7019) @@ -970,8 +970,7 @@ def get_points(self): if self._invalid: points = self._transform.transform(self._bbox.get_points()) - if ma.isMaskedArray(points): - np.putmask(points, points.mask, 0.0) + points = np.ma.filled(points, 0.0) self._points = points self._invalid = 0 return self._points This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7018 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7018&view=rev Author: mdboom Date: 2009年03月31日 17:47:27 +0000 (2009年3月31日) Log Message: ----------- Fix putmask update -- use np.ma.filled instead. Modified Paths: -------------- branches/v0_98_5_maint/lib/matplotlib/transforms.py Modified: branches/v0_98_5_maint/lib/matplotlib/transforms.py =================================================================== --- branches/v0_98_5_maint/lib/matplotlib/transforms.py 2009年03月31日 15:23:54 UTC (rev 7017) +++ branches/v0_98_5_maint/lib/matplotlib/transforms.py 2009年03月31日 17:47:27 UTC (rev 7018) @@ -974,8 +974,7 @@ def get_points(self): if self._invalid: points = self._transform.transform(self._bbox.get_points()) - if ma.isMaskedArray(points): - np.putmask(points, points.mask, 0.0) + points = np.ma.filled(points, 0.0) self._points = points self._invalid = 0 return self._points This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7017 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7017&view=rev Author: mdboom Date: 2009年03月31日 15:23:54 +0000 (2009年3月31日) Log Message: ----------- Merged revisions 7016 via svnmerge from https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_98_5_maint ........ r7016 | mdboom | 2009年03月31日 11:22:06 -0400 (2009年3月31日) | 2 lines Fix bug when specifying both scale and label in the axes constructor. Change to use new numpy putmask API. ........ Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/axes.py trunk/matplotlib/lib/matplotlib/transforms.py Property Changed: ---------------- trunk/matplotlib/ trunk/matplotlib/doc/pyplots/README trunk/matplotlib/doc/sphinxext/gen_gallery.py trunk/matplotlib/doc/sphinxext/gen_rst.py trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py Property changes on: trunk/matplotlib ___________________________________________________________________ Modified: svnmerge-integrated - /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7014 + /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7016 Modified: svn:mergeinfo - /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 + /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 Property changes on: trunk/matplotlib/doc/pyplots/README ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 + /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 Property changes on: trunk/matplotlib/doc/sphinxext/gen_gallery.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 + /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 Property changes on: trunk/matplotlib/doc/sphinxext/gen_rst.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 + /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 Modified: trunk/matplotlib/lib/matplotlib/axes.py =================================================================== --- trunk/matplotlib/lib/matplotlib/axes.py 2009年03月31日 15:22:06 UTC (rev 7016) +++ trunk/matplotlib/lib/matplotlib/axes.py 2009年03月31日 15:23:54 UTC (rev 7017) @@ -442,6 +442,8 @@ sharex=None, # use Axes instance's xaxis info sharey=None, # use Axes instance's yaxis info label='', + xscale=None, + yscale=None, **kwargs ): """ @@ -548,6 +550,11 @@ self._axes_locator = None + if xscale: + self.set_xscale(xscale) + if yscale: + self.set_yscale(yscale) + if len(kwargs): martist.setp(self, **kwargs) if self.xaxis is not None: Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 + /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 + /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 + /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014,7016 Modified: trunk/matplotlib/lib/matplotlib/transforms.py =================================================================== --- trunk/matplotlib/lib/matplotlib/transforms.py 2009年03月31日 15:22:06 UTC (rev 7016) +++ trunk/matplotlib/lib/matplotlib/transforms.py 2009年03月31日 15:23:54 UTC (rev 7017) @@ -971,8 +971,7 @@ if self._invalid: points = self._transform.transform(self._bbox.get_points()) if ma.isMaskedArray(points): - points.putmask(0.0) - points = np.asarray(points) + np.putmask(points, points.mask, 0.0) self._points = points self._invalid = 0 return self._points This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7016 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7016&view=rev Author: mdboom Date: 2009年03月31日 15:22:06 +0000 (2009年3月31日) Log Message: ----------- Fix bug when specifying both scale and label in the axes constructor. Change to use new numpy putmask API. Modified Paths: -------------- branches/v0_98_5_maint/lib/matplotlib/axes.py branches/v0_98_5_maint/lib/matplotlib/transforms.py Modified: branches/v0_98_5_maint/lib/matplotlib/axes.py =================================================================== --- branches/v0_98_5_maint/lib/matplotlib/axes.py 2009年03月31日 15:13:24 UTC (rev 7015) +++ branches/v0_98_5_maint/lib/matplotlib/axes.py 2009年03月31日 15:22:06 UTC (rev 7016) @@ -439,6 +439,8 @@ sharex=None, # use Axes instance's xaxis info sharey=None, # use Axes instance's yaxis info label='', + xscale=None, + yscale=None, **kwargs ): """ @@ -543,6 +545,11 @@ self.set_navigate(True) self.set_navigate_mode(None) + if xscale: + self.set_xscale(xscale) + if yscale: + self.set_yscale(yscale) + if len(kwargs): martist.setp(self, **kwargs) if self.xaxis is not None: Modified: branches/v0_98_5_maint/lib/matplotlib/transforms.py =================================================================== --- branches/v0_98_5_maint/lib/matplotlib/transforms.py 2009年03月31日 15:13:24 UTC (rev 7015) +++ branches/v0_98_5_maint/lib/matplotlib/transforms.py 2009年03月31日 15:22:06 UTC (rev 7016) @@ -975,8 +975,7 @@ if self._invalid: points = self._transform.transform(self._bbox.get_points()) if ma.isMaskedArray(points): - points.putmask(0.0) - points = np.asarray(points) + np.putmask(points, points.mask, 0.0) self._points = points self._invalid = 0 return self._points This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7015 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7015&view=rev Author: mdboom Date: 2009年03月31日 15:13:24 +0000 (2009年3月31日) Log Message: ----------- Merged revisions 7014 via svnmerge from https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_98_5_maint ........ r7014 | mdboom | 2009年03月31日 10:50:12 -0400 (2009年3月31日) | 2 lines Remove some global caches in order to remove a theoretical threading problem. ........ Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/mathtext.py Property Changed: ---------------- trunk/matplotlib/ trunk/matplotlib/doc/pyplots/README trunk/matplotlib/doc/sphinxext/gen_gallery.py trunk/matplotlib/doc/sphinxext/gen_rst.py trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py Property changes on: trunk/matplotlib ___________________________________________________________________ Modified: svnmerge-integrated - /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7001 + /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7014 Modified: svn:mergeinfo - /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 + /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 Property changes on: trunk/matplotlib/doc/pyplots/README ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 + /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 Property changes on: trunk/matplotlib/doc/sphinxext/gen_gallery.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 + /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 Property changes on: trunk/matplotlib/doc/sphinxext/gen_rst.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 + /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 Modified: trunk/matplotlib/lib/matplotlib/mathtext.py =================================================================== --- trunk/matplotlib/lib/matplotlib/mathtext.py 2009年03月31日 14:50:12 UTC (rev 7014) +++ trunk/matplotlib/lib/matplotlib/mathtext.py 2009年03月31日 15:13:24 UTC (rev 7015) @@ -653,17 +653,16 @@ 'sf' : 'cmss10', 'ex' : 'cmex10' } - fontmap = {} def __init__(self, *args, **kwargs): self._stix_fallback = StixFonts(*args, **kwargs) TruetypeFonts.__init__(self, *args, **kwargs) - if not len(self.fontmap): - for key, val in self._fontmap.iteritems(): - fullpath = findfont(val) - self.fontmap[key] = fullpath - self.fontmap[val] = fullpath + self.fontmap = {} + for key, val in self._fontmap.iteritems(): + fullpath = findfont(val) + self.fontmap[key] = fullpath + self.fontmap[val] = fullpath _slanted_symbols = set(r"\int \oint".split()) @@ -765,7 +764,6 @@ This class will "fallback" on the Bakoma fonts when a required symbol can not be found in the font. """ - fontmap = {} use_cmex = True def __init__(self, *args, **kwargs): @@ -775,14 +773,14 @@ else: self.cm_fallback = None TruetypeFonts.__init__(self, *args, **kwargs) - if not len(self.fontmap): - for texfont in "cal rm tt it bf sf".split(): - prop = rcParams['mathtext.' + texfont] - font = findfont(prop) - self.fontmap[texfont] = font - prop = FontProperties('cmex10') + self.fontmap = {} + for texfont in "cal rm tt it bf sf".split(): + prop = rcParams['mathtext.' + texfont] font = findfont(prop) - self.fontmap['ex'] = font + self.fontmap[texfont] = font + prop = FontProperties('cmex10') + font = findfont(prop) + self.fontmap['ex'] = font _slanted_symbols = set(r"\int \oint".split()) @@ -891,18 +889,17 @@ 4 : 'STIXSize4', 5 : 'STIXSize5' } - fontmap = {} use_cmex = False cm_fallback = False _sans = False def __init__(self, *args, **kwargs): TruetypeFonts.__init__(self, *args, **kwargs) - if not len(self.fontmap): - for key, name in self._fontmap.iteritems(): - fullpath = findfont(name) - self.fontmap[key] = fullpath - self.fontmap[name] = fullpath + self.fontmap = {} + for key, name in self._fontmap.iteritems(): + fullpath = findfont(name) + self.fontmap[key] = fullpath + self.fontmap[name] = fullpath def _map_virtual_font(self, fontname, font_class, uniindex): # Handle these "fonts" that are actually embedded in Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 + /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 + /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 + /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001,7014 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7014 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7014&view=rev Author: mdboom Date: 2009年03月31日 14:50:12 +0000 (2009年3月31日) Log Message: ----------- Remove some global caches in order to remove a theoretical threading problem. Modified Paths: -------------- branches/v0_98_5_maint/lib/matplotlib/mathtext.py Modified: branches/v0_98_5_maint/lib/matplotlib/mathtext.py =================================================================== --- branches/v0_98_5_maint/lib/matplotlib/mathtext.py 2009年03月30日 22:57:31 UTC (rev 7013) +++ branches/v0_98_5_maint/lib/matplotlib/mathtext.py 2009年03月31日 14:50:12 UTC (rev 7014) @@ -652,17 +652,16 @@ 'sf' : 'cmss10', 'ex' : 'cmex10' } - fontmap = {} def __init__(self, *args, **kwargs): self._stix_fallback = StixFonts(*args, **kwargs) TruetypeFonts.__init__(self, *args, **kwargs) - if not len(self.fontmap): - for key, val in self._fontmap.iteritems(): - fullpath = findfont(val) - self.fontmap[key] = fullpath - self.fontmap[val] = fullpath + self.fontmap = {} + for key, val in self._fontmap.iteritems(): + fullpath = findfont(val) + self.fontmap[key] = fullpath + self.fontmap[val] = fullpath _slanted_symbols = set(r"\int \oint".split()) @@ -764,7 +763,6 @@ This class will "fallback" on the Bakoma fonts when a required symbol can not be found in the font. """ - fontmap = {} use_cmex = True def __init__(self, *args, **kwargs): @@ -774,14 +772,14 @@ else: self.cm_fallback = None TruetypeFonts.__init__(self, *args, **kwargs) - if not len(self.fontmap): - for texfont in "cal rm tt it bf sf".split(): - prop = rcParams['mathtext.' + texfont] - font = findfont(prop) - self.fontmap[texfont] = font - prop = FontProperties('cmex10') + self.fontmap = {} + for texfont in "cal rm tt it bf sf".split(): + prop = rcParams['mathtext.' + texfont] font = findfont(prop) - self.fontmap['ex'] = font + self.fontmap[texfont] = font + prop = FontProperties('cmex10') + font = findfont(prop) + self.fontmap['ex'] = font _slanted_symbols = set(r"\int \oint".split()) @@ -890,18 +888,17 @@ 4 : 'STIXSize4', 5 : 'STIXSize5' } - fontmap = {} use_cmex = False cm_fallback = False _sans = False def __init__(self, *args, **kwargs): TruetypeFonts.__init__(self, *args, **kwargs) - if not len(self.fontmap): - for key, name in self._fontmap.iteritems(): - fullpath = findfont(name) - self.fontmap[key] = fullpath - self.fontmap[name] = fullpath + self.fontmap = {} + for key, name in self._fontmap.iteritems(): + fullpath = findfont(name) + self.fontmap[key] = fullpath + self.fontmap[name] = fullpath def _map_virtual_font(self, fontname, font_class, uniindex): # Handle these "fonts" that are actually embedded in This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7013 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7013&view=rev Author: jswhit Date: 2009年03月30日 22:57:31 +0000 (2009年3月30日) Log Message: ----------- added latmax kwarg to drawparallels and drawmeridians (patch from Chris Murphy). Modified Paths: -------------- trunk/toolkits/basemap/Changelog trunk/toolkits/basemap/README trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py Modified: trunk/toolkits/basemap/Changelog =================================================================== --- trunk/toolkits/basemap/Changelog 2009年03月29日 03:43:49 UTC (rev 7012) +++ trunk/toolkits/basemap/Changelog 2009年03月30日 22:57:31 UTC (rev 7013) @@ -1,4 +1,6 @@ version 0.99.4 (not yet released) + * added latmax kwarg to drawparallels and drawmeridians + (patch from Chris Murphy). * added new example "plotmap_shaded.py" (shaded relief plot). * added new example "plothighsandlows.py". * add fix_aspect kwarg to Basemap.__init__, when False Modified: trunk/toolkits/basemap/README =================================================================== --- trunk/toolkits/basemap/README 2009年03月29日 03:43:49 UTC (rev 7012) +++ trunk/toolkits/basemap/README 2009年03月30日 22:57:31 UTC (rev 7013) @@ -132,5 +132,6 @@ Ryan May David Huard Mauro Cavalcanti +Chris Murphy for valuable contributions. Modified: trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2009年03月29日 03:43:49 UTC (rev 7012) +++ trunk/toolkits/basemap/lib/mpl_toolkits/basemap/__init__.py 2009年03月30日 22:57:31 UTC (rev 7013) @@ -1711,7 +1711,8 @@ def drawparallels(self,circles,color='k',linewidth=1.,zorder=None, \ dashes=[1,1],labels=[0,0,0,0],labelstyle=None, \ - fmt='%g',xoffset=None,yoffset=None,ax=None,**kwargs): + fmt='%g',xoffset=None,yoffset=None,ax=None,latmax=None, + **kwargs): """ Draw and label parallels (latitude lines) for values (in degrees) given in the sequence ``circles``. @@ -1748,6 +1749,8 @@ (default is 0.01 times height of map in map projection coordinates). ax axes instance (overrides default axes instance) + latmax absolute value of latitude to which meridians are drawn + (default is 80). \**kwargs additional keyword arguments controlling text for labels that are passed on to the text method of the axes instance (see @@ -1769,7 +1772,7 @@ elif ax is None and self.ax is not None: ax = self.ax # don't draw meridians past latmax, always draw parallel at latmax. - latmax = 80. + if latmax is None: latmax = 80. # offset for labels. if yoffset is None: yoffset = (self.urcrnry-self.llcrnry)/100. @@ -1968,7 +1971,8 @@ def drawmeridians(self,meridians,color='k',linewidth=1., zorder=None,\ dashes=[1,1],labels=[0,0,0,0],labelstyle=None,\ - fmt='%g',xoffset=None,yoffset=None,ax=None,**kwargs): + fmt='%g',xoffset=None,yoffset=None,ax=None,latmax=None, + **kwargs): """ Draw and label meridians (longitude lines) for values (in degrees) given in the sequence ``meridians``. @@ -2005,6 +2009,8 @@ (default is 0.01 times height of map in map projection coordinates). ax axes instance (overrides default axes instance) + latmax absolute value of latitude to which meridians are drawn + (default is 80). \**kwargs additional keyword arguments controlling text for labels that are passed on to the text method of the axes instance (see @@ -2026,7 +2032,7 @@ elif ax is None and self.ax is not None: ax = self.ax # don't draw meridians past latmax, always draw parallel at latmax. - latmax = 80. # not used for cyl, merc or miller projections. + if latmax is None: latmax = 80. # unused w/ cyl, merc or miller proj. # offset for labels. if yoffset is None: yoffset = (self.urcrnry-self.llcrnry)/100. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7012 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7012&view=rev Author: efiring Date: 2009年03月29日 03:43:49 +0000 (2009年3月29日) Log Message: ----------- Added Karen Tracey's threading_test.py. Added Paths: ----------- trunk/matplotlib/unit/threading_test.py Added: trunk/matplotlib/unit/threading_test.py =================================================================== --- trunk/matplotlib/unit/threading_test.py (rev 0) +++ trunk/matplotlib/unit/threading_test.py 2009年03月29日 03:43:49 UTC (rev 7012) @@ -0,0 +1,70 @@ +#! /usr/bin/python +""" +Test by Karen Tracey for threading problem reported in +http://www.mail-archive.com/mat...@li.../msg04819.html +and solved by JDH with svn r7008. +""" + +import os +import threading +import traceback + +import numpy as np +from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas +from matplotlib.figure import Figure + +thread_count = 8 +max_iterations = 50 +exception_raised = False + +def png_thread(tn): + png_fname = 'out%d.png' % tn + vals = 100 + 15 * np.random.randn(10000) + + i = 0 + excp = None + global exception_raised + while not exception_raised and i < max_iterations: + i += 1 + png_f = open(png_fname, 'wb') + + try: + fig = Figure() + ax = fig.add_subplot(111) + ax.hist(vals, 50) + FigureCanvas(fig).print_png(png_f) + + except Exception, excp: + pass + + png_f.close() + if excp: + print 'png_thread %d failed on iteration %d:' % (tn, i) + print traceback.format_exc(excp) + exception_raised = True + else: + print 'png_thread %d completed iteration %d.' % (tn, i) + + os.unlink(png_fname) + +def main(tc): + threads = [] + for i in range(tc): + threads.append(threading.Thread(target=png_thread, args=(i+1,))) + + for t in threads: + t.start() + + for t in threads: + t.join() + + if not exception_raised: + msg = 'Success! %d threads completed %d iterations with no exceptions raised.' + else: + msg = 'Failed! Exception raised before %d threads completed %d iterations.' + + print msg % (tc, max_iterations) + +if __name__== "__main__": + main(thread_count) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7011 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7011&view=rev Author: jswhit Date: 2009年03月29日 00:54:14 +0000 (2009年3月29日) Log Message: ----------- print message if LightSource not found Modified Paths: -------------- trunk/toolkits/basemap/examples/plotmap_shaded.py Modified: trunk/toolkits/basemap/examples/plotmap_shaded.py =================================================================== --- trunk/toolkits/basemap/examples/plotmap_shaded.py 2009年03月28日 21:13:38 UTC (rev 7010) +++ trunk/toolkits/basemap/examples/plotmap_shaded.py 2009年03月29日 00:54:14 UTC (rev 7011) @@ -7,8 +7,12 @@ import numpy as np import matplotlib.pyplot as plt import matplotlib.mlab as mlab -from matplotlib.colors import LightSource +try: + from matplotlib.colors import LightSource +except ImportError: + raise ImportError("Need a more recent version of matplotlib to run this example") + # read in topo data (on a regular lat/lon grid) # longitudes go from 20 to 380. topoin = mlab.load('etopo20data.gz') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7010 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7010&view=rev Author: efiring Date: 2009年03月28日 21:13:38 +0000 (2009年3月28日) Log Message: ----------- Make images handle invalid values as if masked. A little cleanup and docstring addition to image.py was included. Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/lib/matplotlib/cbook.py trunk/matplotlib/lib/matplotlib/image.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2009年03月28日 00:59:44 UTC (rev 7009) +++ trunk/matplotlib/CHANGELOG 2009年03月28日 21:13:38 UTC (rev 7010) @@ -1,3 +1,6 @@ +2009年03月28日 Make images handle nan in their array argument. + A helper, cbook.safe_masked_invalid() was added. - EF + 2009年03月25日 Make contour and contourf handle nan in their Z argument. - EF 2009年03月20日 Add AuxTransformBox in offsetbox.py to support some transformation. Modified: trunk/matplotlib/lib/matplotlib/cbook.py =================================================================== --- trunk/matplotlib/lib/matplotlib/cbook.py 2009年03月28日 00:59:44 UTC (rev 7009) +++ trunk/matplotlib/lib/matplotlib/cbook.py 2009年03月28日 21:13:38 UTC (rev 7010) @@ -933,6 +933,15 @@ except TypeError: return False +def safe_masked_invalid(x): + x = np.asanyarray(x) + try: + xm = np.ma.masked_invalid(x, copy=False) + xm.shrink_mask() + except TypeError: + return x + return xm + class MemoryMonitor: def __init__(self, nmax=20000): self._nmax = nmax Modified: trunk/matplotlib/lib/matplotlib/image.py =================================================================== --- trunk/matplotlib/lib/matplotlib/image.py 2009年03月28日 00:59:44 UTC (rev 7009) +++ trunk/matplotlib/lib/matplotlib/image.py 2009年03月28日 21:13:38 UTC (rev 7010) @@ -10,13 +10,14 @@ from numpy import ma from matplotlib import rcParams -from matplotlib import artist as martist -from matplotlib import colors as mcolors -from matplotlib import cm +import matplotlib.artist as martist +import matplotlib.colors as mcolors +import matplotlib.cm as cm +import matplotlib.cbook as cbook # For clarity, names from _image are given explicitly in this module: -from matplotlib import _image -from matplotlib import _png +import matplotlib._image as _image +import matplotlib._png as _png # For user convenience, the names from _image are also imported into # the image namespace: @@ -238,8 +239,9 @@ clippath, affine) def contains(self, mouseevent): - """Test whether the mouse event occured within the image. """ + Test whether the mouse event occured within the image. + """ if callable(self._contains): return self._contains(self,mouseevent) # TODO: make sure this is consistent with patch and patch # collection on nonlinear transformed coordinates. @@ -271,18 +273,17 @@ rows, cols, buffer = im.as_rgba_str() _png.write_png(buffer, cols, rows, fname) - def set_data(self, A, shape=None): + def set_data(self, A): """ Set the image array - ACCEPTS: numpy/PIL Image A""" + ACCEPTS: numpy/PIL Image A + """ # check if data is PIL Image without importing Image if hasattr(A,'getpixel'): self._A = pil_to_array(A) - elif ma.isMA(A): - self._A = A else: - self._A = np.asarray(A) # assume array + self._A = cbook.safe_masked_invalid(A) if self._A.dtype != np.uint8 and not np.can_cast(self._A.dtype, np.float): raise TypeError("Image data can not convert to float") @@ -310,8 +311,9 @@ def set_extent(self, extent): - """extent is data axes (left, right, bottom, top) for making image plots """ + extent is data axes (left, right, bottom, top) for making image plots + """ self._extent = extent xmin, xmax, ymin, ymax = extent @@ -375,7 +377,8 @@ return (-0.5, numcols-0.5, -0.5, numrows-0.5) def set_filternorm(self, filternorm): - """Set whether the resize filter norms the weights -- see + """ + Set whether the resize filter norms the weights -- see help for imshow ACCEPTS: 0 or 1 @@ -390,7 +393,8 @@ return self._filternorm def set_filterrad(self, filterrad): - """Set the resize filter radius only applicable to some + """ + Set the resize filter radius only applicable to some interpolation schemes -- see help for imshow ACCEPTS: positive float @@ -405,9 +409,11 @@ class NonUniformImage(AxesImage): - def __init__(self, ax, - **kwargs - ): + def __init__(self, ax, **kwargs): + """ + kwargs are identical to those for AxesImage, except + that 'interpolation' defaults to 'nearest' + """ interp = kwargs.pop('interpolation', 'nearest') AxesImage.__init__(self, ax, **kwargs) @@ -434,10 +440,19 @@ return im def set_data(self, x, y, A): + """ + Set the grid for the pixel centers, and the pixel values. + + *x* and *y* are 1-D ndarrays of lengths N and M, respectively, + specifying pixel centers + + *A* is an (M,N) ndarray or masked array of values to be + colormapped, or a (M,N,3) RGB array, or a (M,N,4) RGBA + array. + """ x = np.asarray(x,np.float32) y = np.asarray(y,np.float32) - if not ma.isMA(A): - A = np.asarray(A) + A = cbook.safe_masked_invalid(A) if len(x.shape) != 1 or len(y.shape) != 1\ or A.shape[0:2] != (y.shape[0], x.shape[0]): raise TypeError("Axes don't match array shape") @@ -567,8 +582,7 @@ def set_data(self, x, y, A): - if not ma.isMA(A): - A = np.asarray(A) + A = cbook.safe_masked_invalid(A) if x is None: x = np.arange(0, A.shape[1]+1, dtype=np.float64) else: @@ -666,6 +680,19 @@ return (-0.5+self.ox, numcols-0.5+self.ox, -0.5+self.oy, numrows-0.5+self.oy) + def set_data(self, A): + """ + Set the image array + + """ + cm.ScalarMappable.set_array(self, cbook.safe_masked_invalid(A)) + + def set_array(self, A): + """ + Deprecated; use set_data for consistency with other image types. + """ + self.set_data(A) + def make_image(self, magnification=1.0): if self._A is None: raise RuntimeError('You must first set the image array') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7009 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7009&view=rev Author: jswhit Date: 2009年03月28日 00:59:44 +0000 (2009年3月28日) Log Message: ----------- lightsource --> LightSource Modified Paths: -------------- trunk/toolkits/basemap/examples/plotmap_shaded.py Modified: trunk/toolkits/basemap/examples/plotmap_shaded.py =================================================================== --- trunk/toolkits/basemap/examples/plotmap_shaded.py 2009年03月27日 21:11:07 UTC (rev 7008) +++ trunk/toolkits/basemap/examples/plotmap_shaded.py 2009年03月28日 00:59:44 UTC (rev 7009) @@ -7,7 +7,7 @@ import numpy as np import matplotlib.pyplot as plt import matplotlib.mlab as mlab -from matplotlib.colors import lightsource +from matplotlib.colors import LightSource # read in topo data (on a regular lat/lon grid) # longitudes go from 20 to 380. @@ -27,7 +27,7 @@ nx = int((m.xmax-m.xmin)/40000.)+1; ny = int((m.ymax-m.ymin)/40000.)+1 topodat,x,y = m.transform_scalar(topoin,lons,lats,nx,ny,returnxy=True) # create light source object. -ls = lightsource(azdeg = 90, altdeg = 20) +ls = LightSource(azdeg = 90, altdeg = 20) # convert data to rgb array including shading from light source. # (must specify color map) rgb = ls.shade(topodat, plt.cm.jet) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7008 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7008&view=rev Author: jdh2358 Date: 2009年03月27日 21:11:07 +0000 (2009年3月27日) Log Message: ----------- moved agg caches to instance namespace for thread safety Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_agg.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_agg.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_agg.py 2009年03月27日 21:10:24 UTC (rev 7007) +++ trunk/matplotlib/lib/matplotlib/backends/backend_agg.py 2009年03月27日 21:11:07 UTC (rev 7008) @@ -46,11 +46,12 @@ context instance that controls the colors/styles """ debug=1 - texd = maxdict(50) # a cache of tex image rasters - _fontd = maxdict(50) def __init__(self, width, height, dpi): if __debug__: verbose.report('RendererAgg.__init__', 'debug-annoying') RendererBase.__init__(self) + self.texd = maxdict(50) # a cache of tex image rasters + self._fontd = maxdict(50) + self.dpi = dpi self.width = width self.height = height This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7007 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7007&view=rev Author: jswhit Date: 2009年03月27日 21:10:24 +0000 (2009年3月27日) Log Message: ----------- changed name of lightsource class to LightSource to conform to coding guidelines. Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/examples/pylab_examples/shading_example.py trunk/matplotlib/lib/matplotlib/colors.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2009年03月27日 18:11:18 UTC (rev 7006) +++ trunk/matplotlib/CHANGELOG 2009年03月27日 21:10:24 UTC (rev 7007) @@ -9,7 +9,7 @@ 2009年03月17日 Fix bugs in edge color handling by contourf, found by Jae-Joon Lee. - EF -2009年03月14日 Added 'lightsource' class to colors module for +2009年03月14日 Added 'LightSource' class to colors module for creating shaded relief maps. shading_example.py added to illustrate usage. - JSW Modified: trunk/matplotlib/examples/pylab_examples/shading_example.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/shading_example.py 2009年03月27日 18:11:18 UTC (rev 7006) +++ trunk/matplotlib/examples/pylab_examples/shading_example.py 2009年03月27日 21:10:24 UTC (rev 7007) @@ -1,6 +1,6 @@ import numpy as np import matplotlib.pyplot as plt -from matplotlib.colors import lightsource +from matplotlib.colors import LightSource # example showing how to make shaded relief plots # like mathematica @@ -12,7 +12,7 @@ X,Y=np.mgrid[-5:5:0.05,-5:5:0.05] Z=np.sqrt(X**2+Y**2)+np.sin(X**2+Y**2) # creat light source object. -ls = lightsource(azdeg=0,altdeg=65) +ls = LightSource(azdeg=0,altdeg=65) # shade data, creating an rgb array. rgb = ls.shade(Z,plt.cm.copper) # plot un-shaded and shaded images. Modified: trunk/matplotlib/lib/matplotlib/colors.py =================================================================== --- trunk/matplotlib/lib/matplotlib/colors.py 2009年03月27日 18:11:18 UTC (rev 7006) +++ trunk/matplotlib/lib/matplotlib/colors.py 2009年03月27日 21:10:24 UTC (rev 7007) @@ -955,7 +955,7 @@ rgb[:,:,0]=r; rgb[:,:,1]=g; rgb[:,:,2]=b return rgb -class lightsource(object): +class LightSource(object): """ Create a light source coming from the specified azimuth and elevation. Angles are in degrees, with the azimuth measured This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7006 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7006&view=rev Author: jdh2358 Date: 2009年03月27日 18:11:18 +0000 (2009年3月27日) Log Message: ----------- applied Gael's sphinx patch Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py Modified: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py =================================================================== --- trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py 2009年03月25日 19:27:28 UTC (rev 7005) +++ trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py 2009年03月27日 18:11:18 UTC (rev 7006) @@ -17,6 +17,7 @@ """ import sys, os, glob, shutil, hashlib, imp, warnings, cStringIO +import re try: from hashlib import md5 except ImportError: @@ -33,7 +34,10 @@ import sphinx sphinx_version = sphinx.__version__.split(".") -sphinx_version = tuple([int(x) for x in sphinx_version[:2]]) +# The split is necessary for sphinx beta versions where the string is +# '6b1' +sphinx_version = tuple([int(re.split('[a-z]', x)[0]) + for x in sphinx_version[:2]]) import matplotlib import matplotlib.cbook as cbook This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7005 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7005&view=rev Author: efiring Date: 2009年03月25日 19:27:28 +0000 (2009年3月25日) Log Message: ----------- Contouring handles nans in Z via masking. (The bug in filled contouring with internal masked regions remains.) Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/examples/pylab_examples/contourf_demo.py trunk/matplotlib/lib/matplotlib/contour.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2009年03月24日 01:57:26 UTC (rev 7004) +++ trunk/matplotlib/CHANGELOG 2009年03月25日 19:27:28 UTC (rev 7005) @@ -1,5 +1,7 @@ -2009年03月20日 Add AuxTransformBox in offsetbox.py to support some transformation. - anchored_text.py example is enhanced and renamed +2009年03月25日 Make contour and contourf handle nan in their Z argument. - EF + +2009年03月20日 Add AuxTransformBox in offsetbox.py to support some transformation. + anchored_text.py example is enhanced and renamed (anchored_artists.py). - JJL 2009年03月20日 Add "bar" connection style for annotation - JJL Modified: trunk/matplotlib/examples/pylab_examples/contourf_demo.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/contourf_demo.py 2009年03月24日 01:57:26 UTC (rev 7004) +++ trunk/matplotlib/examples/pylab_examples/contourf_demo.py 2009年03月25日 19:27:28 UTC (rev 7005) @@ -3,7 +3,9 @@ origin = 'lower' #origin = 'upper' -test_masking = False # There is a bug in filled contour masking. +# The following controls only interior masking. +test_masking = False # There is a bug in filled contour masking with + # interior masks. if test_masking: # Use a coarse grid so only a few masked points are needed. @@ -30,6 +32,18 @@ Z[0,0] = 0 Z = ma.array(Z, mask=badmask) +nr, nc = Z.shape + +# put NaNs in one corner: +Z[-nr//6:, -nc//6:] = nan +# contourf will convert these to masked + + +Z = ma.array(Z) +# mask another corner: +Z[:nr//6, :nc//6] = ma.masked + + # We are using automatic selection of contour levels; # this is usually not such a good idea, because they don't # occur on nice boundaries, but we do it here for purposes @@ -48,7 +62,7 @@ origin=origin, hold='on') -title('Nonsense') +title('Nonsense (with 2 masked corners)') xlabel('word length anomaly') ylabel('sentence length anomaly') @@ -72,7 +86,7 @@ colors = ('k',), linewidths = (3,), origin = origin) -title('Listed colors') +title('Listed colors (with 2 masked corners)') clabel(CS4, fmt = '%2.1f', colors = 'w', fontsize=14) colorbar(CS3) Modified: trunk/matplotlib/lib/matplotlib/contour.py =================================================================== --- trunk/matplotlib/lib/matplotlib/contour.py 2009年03月24日 01:57:26 UTC (rev 7004) +++ trunk/matplotlib/lib/matplotlib/contour.py 2009年03月25日 19:27:28 UTC (rev 7005) @@ -756,6 +756,7 @@ x,y,z = self._check_xyz(args[:3]) else: raise TypeError("Too many arguments to %s; see help(%s)" % (fn,fn)) + z = ma.masked_invalid(z, copy=False) self.zmax = ma.maximum(z) self.zmin = ma.minimum(z) if self.logscale and self.zmin <= 0: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7004 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7004&view=rev Author: jdh2358 Date: 2009年03月24日 01:57:26 +0000 (2009年3月24日) Log Message: ----------- ticker typo fixes Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/ticker.py Modified: trunk/matplotlib/lib/matplotlib/ticker.py =================================================================== --- trunk/matplotlib/lib/matplotlib/ticker.py 2009年03月24日 01:49:18 UTC (rev 7003) +++ trunk/matplotlib/lib/matplotlib/ticker.py 2009年03月24日 01:57:26 UTC (rev 7004) @@ -920,13 +920,13 @@ """ Keyword args: *prune* - Remove edge ticks -- useful for stacked or ganed plots + Remove edge ticks -- useful for stacked or ganged plots where the upper tick of one axes overlaps with the lower - tick of the axes above it. one of 'lower' | 'upper'| + tick of the axes above it. One of 'lower' | 'upper' | 'both' | None. If prune=='lower', the smallest tick will be removed. If prune=='upper', the largest tick will be removed. If prune=='both', the largest and smallest ticks - will be removed. If prune==None, no ticks will be removed + will be removed. If prune==None, no ticks will be removed. """ self._nbins = int(nbins) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7003 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7003&view=rev Author: jdh2358 Date: 2009年03月24日 01:49:18 +0000 (2009年3月24日) Log Message: ----------- added prune option to maxnlocataor; updated finance demo Modified Paths: -------------- trunk/matplotlib/examples/pylab_examples/finance_work2.py trunk/matplotlib/lib/matplotlib/ticker.py Modified: trunk/matplotlib/examples/pylab_examples/finance_work2.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/finance_work2.py 2009年03月23日 19:18:35 UTC (rev 7002) +++ trunk/matplotlib/examples/pylab_examples/finance_work2.py 2009年03月24日 01:49:18 UTC (rev 7003) @@ -201,7 +201,7 @@ ax3.text(0.025, 0.95, 'MACD (%d, %d, %d)'%(nfast, nslow, nema), va='top', transform=ax3.transAxes, fontsize=textsize) -ax3.set_yticks([]) +#ax3.set_yticks([]) # turn off upper axis tick labels, rotate the lower ones, etc for ax in ax1, ax2, ax2t, ax3: if ax!=ax3: @@ -215,15 +215,11 @@ ax.fmt_xdata = mdates.DateFormatter('%Y-%m-%d') -class PriceFormatter(mticker.FormatStrFormatter): - 'suppress the lowest tick label to prevent overlap' - def __call__(self, x, pos=None): - if pos==0: - return '' - else: - return mticker.FormatStrFormatter.__call__(self, x, pos=None) -ax2.yaxis.set_major_formatter(PriceFormatter('%d')) +# at most 5 ticks, pruning the upper and lower so they don't overlap +# with other ticks +ax2.yaxis.set_major_locator(mticker.MaxNLocator(5, prune='both')) +ax3.yaxis.set_major_locator(mticker.MaxNLocator(5, prune='both')) plt.show() Modified: trunk/matplotlib/lib/matplotlib/ticker.py =================================================================== --- trunk/matplotlib/lib/matplotlib/ticker.py 2009年03月23日 19:18:35 UTC (rev 7002) +++ trunk/matplotlib/lib/matplotlib/ticker.py 2009年03月24日 01:49:18 UTC (rev 7003) @@ -913,13 +913,27 @@ """ def __init__(self, nbins = 10, steps = None, - trim = True, - integer=False, - symmetric=False): + trim = True, + integer=False, + symmetric=False, + prune=None): + """ + Keyword args: + *prune* + Remove edge ticks -- useful for stacked or ganed plots + where the upper tick of one axes overlaps with the lower + tick of the axes above it. one of 'lower' | 'upper'| + 'both' | None. If prune=='lower', the smallest tick will + be removed. If prune=='upper', the largest tick will be + removed. If prune=='both', the largest and smallest ticks + will be removed. If prune==None, no ticks will be removed + + """ self._nbins = int(nbins) self._trim = trim self._integer = integer self._symmetric = symmetric + self._prune = prune if steps is None: self._steps = [1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] else: @@ -957,7 +971,16 @@ def __call__(self): vmin, vmax = self.axis.get_view_interval() vmin, vmax = mtransforms.nonsingular(vmin, vmax, expander = 0.05) - return self.bin_boundaries(vmin, vmax) + locs = self.bin_boundaries(vmin, vmax) + #print 'locs=', locs + prune = self._prune + if prune=='lower': + locs = locs[1:] + elif prune=='upper': + locs = locs[:-1] + elif prune=='both': + locs = locs[1:-1] + return locs def view_limits(self, dmin, dmax): if self._symmetric: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7002 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7002&view=rev Author: mdboom Date: 2009年03月23日 19:18:35 +0000 (2009年3月23日) Log Message: ----------- Merged revisions 6997,7001 via svnmerge from https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_98_5_maint ........ r6997 | mdboom | 2009年03月19日 09:15:00 -0400 (2009年3月19日) | 2 lines Fix bug in Cairo backend related to clipping -- thanks Nathaniel Smith ........ r7001 | ryanmay | 2009年03月23日 14:52:29 -0400 (2009年3月23日) | 1 line Fix typo. Thanks to Sandro Tosi. ........ Modified Paths: -------------- trunk/matplotlib/doc/users/screenshots.rst trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py Property Changed: ---------------- trunk/matplotlib/ trunk/matplotlib/doc/pyplots/README trunk/matplotlib/doc/sphinxext/gen_gallery.py trunk/matplotlib/doc/sphinxext/gen_rst.py trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py Property changes on: trunk/matplotlib ___________________________________________________________________ Modified: svnmerge-integrated - /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-6995 + /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-7001 Modified: svn:mergeinfo - /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 + /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 Property changes on: trunk/matplotlib/doc/pyplots/README ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 + /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 Property changes on: trunk/matplotlib/doc/sphinxext/gen_gallery.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 + /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 Property changes on: trunk/matplotlib/doc/sphinxext/gen_rst.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 + /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 Modified: trunk/matplotlib/doc/users/screenshots.rst =================================================================== --- trunk/matplotlib/doc/users/screenshots.rst 2009年03月23日 18:52:29 UTC (rev 7001) +++ trunk/matplotlib/doc/users/screenshots.rst 2009年03月23日 19:18:35 UTC (rev 7002) @@ -82,7 +82,7 @@ ========== The :func:`~matplotlib.pyplot.pie` command -uses a matlab(TM) compatible syntax to produce py charts. Optional +uses a matlab(TM) compatible syntax to produce pie charts. Optional features include auto-labeling the percentage of area, exploding one or more wedges out from the center of the pie, and a shadow effect. Take a close look at the attached code that produced this figure; nine @@ -268,6 +268,3 @@ :ref:`user_interfaces-mpl_with_glade`. .. image:: ../_static/eeg_small.png - - - Modified: trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py 2009年03月23日 18:52:29 UTC (rev 7001) +++ trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py 2009年03月23日 19:18:35 UTC (rev 7002) @@ -109,6 +109,23 @@ # font transform? + def _do_clip(self, ctx, cliprect, clippath): + if cliprect is not None: + x,y,w,h = cliprect.bounds + # pixel-aligned clip-regions are faster + x,y,w,h = round(x), round(y), round(w), round(h) + ctx.new_path() + ctx.rectangle (x, self.height - h - y, w, h) + ctx.clip () + + if clippath is not None: + tpath, affine = clippath.get_transformed_path_and_affine() + ctx.new_path() + affine = affine + Affine2D().scale(1.0, -1.0).translate(0.0, self.height) + tpath = affine.transform_path(tpath) + RendererCairo.convert_path(ctx, tpath) + ctx.clip() + def _fill_and_stroke (self, ctx, fill_c, alpha): if fill_c is not None: ctx.save() @@ -120,7 +137,6 @@ ctx.restore() ctx.stroke() - @staticmethod def convert_path(ctx, path, transform): for points, code in path.iter_segments(transform): @@ -143,6 +159,9 @@ raise ValueError("The Cairo backend can not draw paths longer than 18980 points.") ctx = gc.ctx + ctx.save() + self._do_clip(ctx, gc._cliprect, gc._clippath) + transform = transform + \ Affine2D().scale(1.0, -1.0).translate(0, self.height) @@ -150,6 +169,7 @@ self.convert_path(ctx, path, transform) self._fill_and_stroke(ctx, rgbFace, gc.get_alpha()) + ctx.restore() def draw_image(self, x, y, im, bbox, clippath=None, clippath_trans=None): # bbox - not currently used @@ -162,9 +182,16 @@ buf, cairo.FORMAT_ARGB32, cols, rows, cols*4) # function does not pass a 'gc' so use renderer.ctx ctx = self.ctx + ctx.save() + if clippath is not None: + tpath = clippath_trans.transform_path(clippath) + ctx.new_path() + RendererCairo.convert_path(ctx, tpath) + ctx.clip() y = self.height - y - rows ctx.set_source_surface (surface, x, y) ctx.paint() + ctx.restore() im.flipud_out() @@ -322,30 +349,10 @@ def set_clip_rectangle(self, rectangle): self._cliprect = rectangle - if rectangle is None: - return - x,y,w,h = rectangle.bounds - # pixel-aligned clip-regions are faster - x,y,w,h = round(x), round(y), round(w), round(h) - ctx = self.ctx - ctx.new_path() - ctx.rectangle (x, self.renderer.height - h - y, w, h) - ctx.clip () - # Alternative: just set _cliprect here and actually set cairo clip rect - # in fill_and_stroke() inside ctx.save() ... ctx.restore() - - def set_clip_path(self, path): - if path is not None: - tpath, affine = path.get_transformed_path_and_affine() - ctx = self.ctx - ctx.new_path() - affine = affine + Affine2D().scale(1.0, -1.0).translate(0.0, self.renderer.height) - RendererCairo.convert_path(ctx, path, affine) - ctx.clip() + self._clippath = path - def set_dashes(self, offset, dashes): self._dashes = offset, dashes if dashes == None: Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 + /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 + /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 + /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995,6997-7001 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7001 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7001&view=rev Author: ryanmay Date: 2009年03月23日 18:52:29 +0000 (2009年3月23日) Log Message: ----------- Fix typo. Thanks to Sandro Tosi. Modified Paths: -------------- branches/v0_98_5_maint/doc/users/screenshots.rst Modified: branches/v0_98_5_maint/doc/users/screenshots.rst =================================================================== --- branches/v0_98_5_maint/doc/users/screenshots.rst 2009年03月20日 20:26:00 UTC (rev 7000) +++ branches/v0_98_5_maint/doc/users/screenshots.rst 2009年03月23日 18:52:29 UTC (rev 7001) @@ -82,7 +82,7 @@ ========== The :func:`~matplotlib.pyplot.pie` command -uses a matlab(TM) compatible syntax to produce py charts. Optional +uses a matlab(TM) compatible syntax to produce pie charts. Optional features include auto-labeling the percentage of area, exploding one or more wedges out from the center of the pie, and a shadow effect. Take a close look at the attached code that produced this figure; nine @@ -268,6 +268,3 @@ :ref:`user_interfaces-mpl_with_glade`. .. image:: ../_static/eeg_small.png - - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 7000 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7000&view=rev Author: leejjoon Date: 2009年03月20日 20:26:00 +0000 (2009年3月20日) Log Message: ----------- Add AuxTransformBox in offsetbox.py Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/lib/matplotlib/offsetbox.py Added Paths: ----------- trunk/matplotlib/examples/pylab_examples/anchored_artists.py Removed Paths: ------------- trunk/matplotlib/examples/pylab_examples/anchored_text.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2009年03月20日 20:10:42 UTC (rev 6999) +++ trunk/matplotlib/CHANGELOG 2009年03月20日 20:26:00 UTC (rev 7000) @@ -1,3 +1,7 @@ +2009年03月20日 Add AuxTransformBox in offsetbox.py to support some transformation. + anchored_text.py example is enhanced and renamed + (anchored_artists.py). - JJL + 2009年03月20日 Add "bar" connection style for annotation - JJL 2009年03月17日 Fix bugs in edge color handling by contourf, found Copied: trunk/matplotlib/examples/pylab_examples/anchored_artists.py (from rev 6998, trunk/matplotlib/examples/pylab_examples/anchored_text.py) =================================================================== --- trunk/matplotlib/examples/pylab_examples/anchored_artists.py (rev 0) +++ trunk/matplotlib/examples/pylab_examples/anchored_artists.py 2009年03月20日 20:26:00 UTC (rev 7000) @@ -0,0 +1,117 @@ +from matplotlib.patches import Rectangle, Ellipse + +from matplotlib.offsetbox import AnchoredOffsetbox, AuxTransformBox, VPacker,\ + TextArea, DrawingArea + + +class AnchoredText(AnchoredOffsetbox): + def __init__(self, s, loc, pad=0.4, borderpad=0.5, prop=None, frameon=True): + + self.txt = TextArea(s, + minimumdescent=False) + + + super(AnchoredText, self).__init__(loc, pad=pad, borderpad=borderpad, + child=self.txt, + prop=prop, + frameon=frameon) + + +class AnchoredSizeBar(AnchoredOffsetbox): + def __init__(self, transform, size, label, loc, + pad=0.1, borderpad=0.1, sep=2, prop=None, frameon=True): + """ + Draw a horizontal bar with the size in data coordinate of the give axes. + A label will be drawn underneath (center-alinged). + + pad, borderpad in fraction of the legend font size (or prop) + sep in points. + """ + self.size_bar = AuxTransformBox(transform) + self.size_bar.add_artist(Rectangle((0,0), size, 0, fc="none")) + + self.txt_label = TextArea(label, minimumdescent=False) + + self._box = VPacker(children=[self.size_bar, self.txt_label], + align="center", + pad=0, sep=sep) + + AnchoredOffsetbox.__init__(self, loc, pad=pad, borderpad=borderpad, + child=self._box, + prop=prop, + frameon=frameon) + + +class AnchoredEllipse(AnchoredOffsetbox): + def __init__(self, transform, width, height, angle, loc, + pad=0.1, borderpad=0.1, prop=None, frameon=True): + """ + Draw an ellipse the size in data coordinate of the give axes. + + pad, borderpad in fraction of the legend font size (or prop) + """ + self._box = AuxTransformBox(transform) + self.ellipse = Ellipse((0,0), width, height, angle) + self._box.add_artist(self.ellipse) + + AnchoredOffsetbox.__init__(self, loc, pad=pad, borderpad=borderpad, + child=self._box, + prop=prop, + frameon=frameon) + + + +class AnchoredDrawingArea(AnchoredOffsetbox): + def __init__(self, width, height, xdescent, ydescent, + loc, pad=0.4, borderpad=0.5, prop=None, frameon=True): + + self.da = DrawingArea(width, height, xdescent, ydescent, clip=True) + + super(AnchoredDrawingArea, self).__init__(loc, pad=pad, borderpad=borderpad, + child=self.da, + prop=None, + frameon=frameon) + + + +if __name__ == "__main__": + + import matplotlib.pyplot as plt + + ax = plt.gca() + ax.set_aspect(1.) + + at = AnchoredText("Figure 1a", + loc=2, frameon=True) + at.patch.set_boxstyle("round,pad=0.,rounding_size=0.2") + ax.add_artist(at) + + from matplotlib.patches import Circle + ada = AnchoredDrawingArea(20, 20, 0, 0, + loc=1, pad=0., frameon=False) + p = Circle((10, 10), 10) + ada.da.add_artist(p) + ax.add_artist(ada) + + # draw an ellipse of width=0.1, height=0.15 in the data coordinate + ae = AnchoredEllipse(ax.transData, width=0.1, height=0.15, angle=0., + loc=3, pad=0.5, borderpad=0.4, frameon=True) + + ax.add_artist(ae) + + # draw a horizontal bar with length of 0.1 in Data coordinate + # (ax.transData) with a label underneath. + as = AnchoredSizeBar(ax.transData, + 0.1, + r"1$^{\prime}$", + loc=8, + pad=0.1, borderpad=0.5, sep=5, + frameon=False) + ax.add_artist(as) + + plt.draw() + plt.show() + + + + Deleted: trunk/matplotlib/examples/pylab_examples/anchored_text.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/anchored_text.py 2009年03月20日 20:10:42 UTC (rev 6999) +++ trunk/matplotlib/examples/pylab_examples/anchored_text.py 2009年03月20日 20:26:00 UTC (rev 7000) @@ -1,183 +0,0 @@ -""" -Place a text (or any offsetbox artist) at the corner of the axes, like a lenged. -""" - -from matplotlib.offsetbox import TextArea, OffsetBox, DrawingArea -from matplotlib.transforms import Bbox -from matplotlib.font_manager import FontProperties -from matplotlib import rcParams -from matplotlib.patches import FancyBboxPatch -from matplotlib.patches import Circle - - -class AnchoredOffsetbox(OffsetBox): - def __init__(self, loc, pad=0.4, borderpad=0.5, - child=None, fontsize=None, frameon=True): - - super(AnchoredOffsetbox, self).__init__() - - self.set_child(child) - - self.loc = loc - self.borderpad=borderpad - self.pad = pad - - if fontsize is None: - prop=FontProperties(size=rcParams["legend.fontsize"]) - self._fontsize = prop.get_size_in_points() - else: - self._fontsize = fontsize - - - - self.patch = FancyBboxPatch( - xy=(0.0, 0.0), width=1., height=1., - facecolor='w', edgecolor='k', - mutation_scale=self._fontsize, - snap=True - ) - self.patch.set_boxstyle("square",pad=0) - self._drawFrame = frameon - - def set_child(self, child): - self._child = child - - def get_children(self): - return [self._child] - - def get_child(self): - return self._child - - def get_extent(self, renderer): - w, h, xd, yd = self.get_child().get_extent(renderer) - fontsize = renderer.points_to_pixels(self._fontsize) - pad = self.pad * fontsize - - return w+2*pad, h+2*pad, xd+pad, yd+pad - - def get_window_extent(self, renderer): - ''' - get the bounding box in display space. - ''' - w, h, xd, yd = self.get_extent(renderer) - ox, oy = self.get_offset(w, h, xd, yd) - return Bbox.from_bounds(ox-xd, oy-yd, w, h) - - def draw(self, renderer): - - if not self.get_visible(): return - - fontsize = renderer.points_to_pixels(self._fontsize) - - def _offset(w, h, xd, yd, fontsize=fontsize, self=self): - bbox = Bbox.from_bounds(0, 0, w, h) - borderpad = self.borderpad*fontsize - x0, y0 = self._get_anchored_bbox(self.loc, - bbox, - self.axes.bbox, - borderpad) - return x0+xd, y0+yd - - self.set_offset(_offset) - - if self._drawFrame: - # update the location and size of the legend - bbox = self.get_window_extent(renderer) - self.patch.set_bounds(bbox.x0, bbox.y0, - bbox.width, bbox.height) - - self.patch.set_mutation_scale(fontsize) - - self.patch.draw(renderer) - - - width, height, xdescent, ydescent = self.get_extent(renderer) - - px, py = self.get_offset(width, height, xdescent, ydescent) - - self.get_child().set_offset((px, py)) - self.get_child().draw(renderer) - - - - def _get_anchored_bbox(self, loc, bbox, parentbbox, borderpad): - assert loc in range(1,11) # called only internally - - BEST, UR, UL, LL, LR, R, CL, CR, LC, UC, C = range(11) - - anchor_coefs={UR:"NE", - UL:"NW", - LL:"SW", - LR:"SE", - R:"E", - CL:"W", - CR:"E", - LC:"S", - UC:"N", - C:"C"} - - c = anchor_coefs[loc] - - container = parentbbox.padded(-borderpad) - anchored_box = bbox.anchored(c, container=container) - return anchored_box.x0, anchored_box.y0 - - -class AnchoredText(AnchoredOffsetbox): - def __init__(self, s, loc, pad=0.4, borderpad=0.5, prop=None, frameon=True): - - self.txt = TextArea(s, - minimumdescent=False) - - - if prop is None: - self.prop=FontProperties(size=rcParams["legend.fontsize"]) - else: - self.prop=prop - - - super(AnchoredText, self).__init__(loc, pad=pad, borderpad=borderpad, - child=self.txt, - fontsize=self.prop.get_size_in_points(), - frameon=frameon) - - -class AnchoredDrawingArea(AnchoredOffsetbox): - def __init__(self, width, height, xdescent, ydescent, - loc, pad=0.4, borderpad=0.5, fontsize=None, frameon=True): - - self.da = DrawingArea(width, height, xdescent, ydescent, clip=True) - - super(AnchoredDrawingArea, self).__init__(loc, pad=pad, borderpad=borderpad, - child=self.da, - fontsize=fontsize, - frameon=frameon) - - - -if __name__ == "__main__": - import matplotlib.pyplot as plt - - #ax = plt.subplot(1,1,1) - plt.clf() - plt.cla() - plt.draw() - ax = plt.gca() - #ax.set_aspect(1.) - - at = AnchoredText("Figure 1(a)", loc=2, frameon=False) - ax.add_artist(at) - - ada = AnchoredDrawingArea(20, 20, 0, 0, loc=3, pad=0., frameon=False) - - p = Circle((10, 10), 10) - ada.da.add_artist(p) - ax.add_artist(ada) - - ax.plot([0,1]) - plt.draw() - - plt.show() - - - Modified: trunk/matplotlib/lib/matplotlib/offsetbox.py =================================================================== --- trunk/matplotlib/lib/matplotlib/offsetbox.py 2009年03月20日 20:10:42 UTC (rev 6999) +++ trunk/matplotlib/lib/matplotlib/offsetbox.py 2009年03月20日 20:26:00 UTC (rev 7000) @@ -656,3 +656,228 @@ bbox_artist(self, renderer, fill=False, props=dict(pad=0.)) + + +class AuxTransformBox(OffsetBox): + """ + Offset Box with the aux_transform . Its children will be + transformed with the aux_transform first then will be + offseted. The absolute coordinate of the aux_transform is meaning + as it will be automaticcaly adjust so that the left-lower corner + of the bounding box of children will be set to (0,0) before the + offset trnasform. + + It is similar to drawing area, except that the extent of the box + is not predetemined but calculated from the window extent of its + children. Furthermore, the extent of the children will be + calculated in the transformed coordinate. + """ + + def __init__(self, aux_transform): + self.aux_transform = aux_transform + OffsetBox.__init__(self) + + self.offset_transform = mtransforms.Affine2D() + self.offset_transform.clear() + self.offset_transform.translate(0, 0) + + # ref_offset_transform is used to make the offset_transform is + # always reference to the lower-left corner of the bbox of its + # children. + self.ref_offset_transform = mtransforms.Affine2D() + self.ref_offset_transform.clear() + + def add_artist(self, a): + 'Add any :class:`~matplotlib.artist.Artist` to the container box' + self._children.append(a) + a.set_transform(self.get_transform()) + + def get_transform(self): + """ + Return the :class:`~matplotlib.transforms.Transform` applied + to the children + """ + + return self.aux_transform + \ + self.ref_offset_transform + \ + self.offset_transform + + def set_transform(self, t): + """ + set_transform is ignored. + """ + pass + + + def set_offset(self, xy): + """ + set offset of the container. + + Accept : tuple of x,y cooridnate in disokay units. + """ + self._offset = xy + + self.offset_transform.clear() + self.offset_transform.translate(xy[0], xy[1]) + + + def get_offset(self): + """ + return offset of the container. + """ + return self._offset + + + def get_window_extent(self, renderer): + ''' + get the bounding box in display space. + ''' + w, h, xd, yd = self.get_extent(renderer) + ox, oy = self.get_offset() #w, h, xd, yd) + return mtransforms.Bbox.from_bounds(ox-xd, oy-yd, w, h) + + + def get_extent(self, renderer): + + # clear the offset transforms + _off = self.ref_offset_transform.to_values() # to be restored later + self.ref_offset_transform.clear() + self.offset_transform.clear() + + # calculate the extent + bboxes = [c.get_window_extent(renderer) for c in self._children] + ub = mtransforms.Bbox.union(bboxes) + + + # adjust ref_offset_tansform + self.ref_offset_transform.translate(-ub.x0, -ub.y0) + # restor offset transform + self.offset_transform.matrix_from_values(*_off) + + return ub.width, ub.height, 0., 0. + + + def draw(self, renderer): + """ + Draw the children + """ + + for c in self._children: + c.draw(renderer) + + bbox_artist(self, renderer, fill=False, props=dict(pad=0.)) + + +from matplotlib.font_manager import FontProperties +from matplotlib.patches import FancyBboxPatch +from matplotlib import rcParams +from matplotlib.transforms import Bbox + +class AnchoredOffsetbox(OffsetBox): + def __init__(self, loc, pad=0.4, borderpad=0.5, + child=None, prop=None, frameon=True): + + super(AnchoredOffsetbox, self).__init__() + + self.set_child(child) + + self.loc = loc + self.borderpad=borderpad + self.pad = pad + + if prop is None: + self.prop=FontProperties(size=rcParams["legend.fontsize"]) + else: + self.prop = prop + + self.patch = FancyBboxPatch( + xy=(0.0, 0.0), width=1., height=1., + facecolor='w', edgecolor='k', + mutation_scale=self.prop.get_size_in_points(), + snap=True + ) + self.patch.set_boxstyle("square",pad=0) + self._drawFrame = frameon + + def set_child(self, child): + self._child = child + + def get_children(self): + return [self._child] + + def get_child(self): + return self._child + + def get_extent(self, renderer): + w, h, xd, yd = self.get_child().get_extent(renderer) + fontsize = renderer.points_to_pixels(self.prop.get_size_in_points()) + pad = self.pad * fontsize + + return w+2*pad, h+2*pad, xd+pad, yd+pad + + def get_window_extent(self, renderer): + ''' + get the bounding box in display space. + ''' + w, h, xd, yd = self.get_extent(renderer) + ox, oy = self.get_offset(w, h, xd, yd) + return Bbox.from_bounds(ox-xd, oy-yd, w, h) + + def draw(self, renderer): + + if not self.get_visible(): return + + fontsize = renderer.points_to_pixels(self.prop.get_size_in_points()) + + def _offset(w, h, xd, yd, fontsize=fontsize, self=self): + bbox = Bbox.from_bounds(0, 0, w, h) + borderpad = self.borderpad*fontsize + x0, y0 = self._get_anchored_bbox(self.loc, + bbox, + self.axes.bbox, + borderpad) + return x0+xd, y0+yd + + self.set_offset(_offset) + + if self._drawFrame: + # update the location and size of the legend + bbox = self.get_window_extent(renderer) + self.patch.set_bounds(bbox.x0, bbox.y0, + bbox.width, bbox.height) + + self.patch.set_mutation_scale(fontsize) + + self.patch.draw(renderer) + + + width, height, xdescent, ydescent = self.get_extent(renderer) + + px, py = self.get_offset(width, height, xdescent, ydescent) + + self.get_child().set_offset((px, py)) + self.get_child().draw(renderer) + + + + def _get_anchored_bbox(self, loc, bbox, parentbbox, borderpad): + assert loc in range(1,11) # called only internally + + BEST, UR, UL, LL, LR, R, CL, CR, LC, UC, C = range(11) + + anchor_coefs={UR:"NE", + UL:"NW", + LL:"SW", + LR:"SE", + R:"E", + CL:"W", + CR:"E", + LC:"S", + UC:"N", + C:"C"} + + c = anchor_coefs[loc] + + container = parentbbox.padded(-borderpad) + anchored_box = bbox.anchored(c, container=container) + return anchored_box.x0, anchored_box.y0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 6999 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6999&view=rev Author: leejjoon Date: 2009年03月20日 20:10:42 +0000 (2009年3月20日) Log Message: ----------- Add bar connection style for annotation Modified Paths: -------------- trunk/matplotlib/CHANGELOG trunk/matplotlib/examples/pylab_examples/annotation_demo2.py trunk/matplotlib/lib/matplotlib/patches.py trunk/matplotlib/lib/matplotlib/text.py Modified: trunk/matplotlib/CHANGELOG =================================================================== --- trunk/matplotlib/CHANGELOG 2009年03月19日 14:44:01 UTC (rev 6998) +++ trunk/matplotlib/CHANGELOG 2009年03月20日 20:10:42 UTC (rev 6999) @@ -1,3 +1,5 @@ +2009年03月20日 Add "bar" connection style for annotation - JJL + 2009年03月17日 Fix bugs in edge color handling by contourf, found by Jae-Joon Lee. - EF Modified: trunk/matplotlib/examples/pylab_examples/annotation_demo2.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/annotation_demo2.py 2009年03月19日 14:44:01 UTC (rev 6998) +++ trunk/matplotlib/examples/pylab_examples/annotation_demo2.py 2009年03月20日 20:10:42 UTC (rev 6999) @@ -71,6 +71,14 @@ ) + ann = ax.annotate('', xy=(4., 1.), xycoords='data', + xytext=(4.5, -1), textcoords='data', + arrowprops=dict(arrowstyle="<->", + connectionstyle="bar", + ec="k", + shrinkA=5, shrinkB=5, + ) + ) if 1: @@ -144,4 +152,5 @@ ) ) + show() Modified: trunk/matplotlib/lib/matplotlib/patches.py =================================================================== --- trunk/matplotlib/lib/matplotlib/patches.py 2009年03月19日 14:44:01 UTC (rev 6998) +++ trunk/matplotlib/lib/matplotlib/patches.py 2009年03月20日 20:10:42 UTC (rev 6999) @@ -2545,6 +2545,92 @@ _style_list["arc"] = Arc + + + class Bar(_Base): + """ + A line with *angle* between A and B with *armA* and + *armB*. One of the arm is extend so that they are connected in + a right angle. The length of armA is determined by (*armA* + + *fraction* x AB distance). Same for armB. + """ + + def __init__(self, armA=0., armB=0., fraction=0.3, angle=None): + """ + *armA* : minimum length of armA + *armB* : minimum length of armB + *fraction* : a fraction of the distance between two points that will be added to armA and armB. + *angle* : anlge of the connecting line (if None, parallel to A and B) + """ + self.armA = armA + self.armB = armB + self.fraction = fraction + self.angle = angle + + def connect(self, posA, posB): + x1, y1 = posA + x20, y20 = x2, y2 = posB + + x12, y12 = (x1 + x2)/2., (y1 + y2)/2. + + theta1 = math.atan2(y2-y1, x2-x1) + dx, dy = x2 - x1, y2 - y1 + dd = (dx*dx + dy*dy)**.5 + ddx, ddy = dx/dd, dy/dd + + armA, armB = self.armA, self.armB + + if self.angle is not None: + #angle = self.angle % 180. + #if angle < 0. or angle > 180.: + # angle + theta0 = (self.angle%180.)/180.*math.pi + #theta0 = (((self.angle+90)%180.) - 90.)/180.*math.pi + dtheta = theta1 - theta0 + dl = dd*math.sin(dtheta) + + dL = dd*math.cos(dtheta) + + #x2, y2 = x2 + dl*ddy, y2 - dl*ddx + x2, y2 = x1 + dL*math.cos(theta0), y1 + dL*math.sin(theta0) + + armB = armB - dl + + # update + dx, dy = x2 - x1, y2 - y1 + dd2 = (dx*dx + dy*dy)**.5 + ddx, ddy = dx/dd2, dy/dd2 + + else: + dl = 0. + + #if armA > armB: + # armB = armA + dl + #else: + # armA = armB - dl + + + arm = max(armA, armB) + f = self.fraction*dd + arm + #fB = self.fraction*dd + armB + + cx1, cy1 = x1 + f*ddy, y1 - f*ddx + cx2, cy2 = x2 + f*ddy, y2 - f*ddx + + vertices = [(x1, y1), + (cx1, cy1), + (cx2, cy2), + (x20, y20)] + codes = [Path.MOVETO, + Path.LINETO, + Path.LINETO, + Path.LINETO] + + return Path(vertices, codes) + + _style_list["bar"] = Bar + + __doc__ = cbook.dedent(__doc__) % \ {"AvailableConnectorstyles": _pprint_styles(_style_list)} Modified: trunk/matplotlib/lib/matplotlib/text.py =================================================================== --- trunk/matplotlib/lib/matplotlib/text.py 2009年03月19日 14:44:01 UTC (rev 6998) +++ trunk/matplotlib/lib/matplotlib/text.py 2009年03月20日 20:10:42 UTC (rev 6999) @@ -406,6 +406,10 @@ props = props.copy() # don't want to alter the pad externally pad = props.pop('pad', 4) pad = renderer.points_to_pixels(pad) + if self._text == "": + self.arrow_patch.set_patchA(None) + return + bbox = self.get_window_extent(renderer) l,b,w,h = bbox.bounds l-=pad/2. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 6998 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6998&view=rev Author: mdboom Date: 2009年03月19日 14:44:01 +0000 (2009年3月19日) Log Message: ----------- Fix mapping regular font the StixSans when fontset is stixsans. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/mathtext.py Modified: trunk/matplotlib/lib/matplotlib/mathtext.py =================================================================== --- trunk/matplotlib/lib/matplotlib/mathtext.py 2009年03月19日 13:15:00 UTC (rev 6997) +++ trunk/matplotlib/lib/matplotlib/mathtext.py 2009年03月19日 14:44:01 UTC (rev 6998) @@ -908,7 +908,8 @@ # Handle these "fonts" that are actually embedded in # other fonts. mapping = stix_virtual_fonts.get(fontname) - if self._sans and mapping is None: + if (self._sans and mapping is None and + fontname not in ('regular', 'default')): mapping = stix_virtual_fonts['sf'] doing_sans_conversion = True else: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 6997 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6997&view=rev Author: mdboom Date: 2009年03月19日 13:15:00 +0000 (2009年3月19日) Log Message: ----------- Fix bug in Cairo backend related to clipping -- thanks Nathaniel Smith Modified Paths: -------------- branches/v0_98_5_maint/lib/matplotlib/backends/backend_cairo.py Modified: branches/v0_98_5_maint/lib/matplotlib/backends/backend_cairo.py =================================================================== --- branches/v0_98_5_maint/lib/matplotlib/backends/backend_cairo.py 2009年03月19日 12:55:07 UTC (rev 6996) +++ branches/v0_98_5_maint/lib/matplotlib/backends/backend_cairo.py 2009年03月19日 13:15:00 UTC (rev 6997) @@ -109,6 +109,23 @@ # font transform? + def _do_clip(self, ctx, cliprect, clippath): + if cliprect is not None: + x,y,w,h = cliprect.bounds + # pixel-aligned clip-regions are faster + x,y,w,h = round(x), round(y), round(w), round(h) + ctx.new_path() + ctx.rectangle (x, self.height - h - y, w, h) + ctx.clip () + + if clippath is not None: + tpath, affine = clippath.get_transformed_path_and_affine() + ctx.new_path() + affine = affine + Affine2D().scale(1.0, -1.0).translate(0.0, self.height) + tpath = affine.transform_path(tpath) + RendererCairo.convert_path(ctx, tpath) + ctx.clip() + def _fill_and_stroke (self, ctx, fill_c, alpha): if fill_c is not None: ctx.save() @@ -120,7 +137,6 @@ ctx.restore() ctx.stroke() - #@staticmethod def convert_path(ctx, tpath): for points, code in tpath.iter_segments(): @@ -144,6 +160,9 @@ raise ValueError("The Cairo backend can not draw paths longer than 18980 points.") ctx = gc.ctx + ctx.save() + self._do_clip(ctx, gc._cliprect, gc._clippath) + transform = transform + \ Affine2D().scale(1.0, -1.0).translate(0, self.height) tpath = transform.transform_path(path) @@ -152,6 +171,7 @@ self.convert_path(ctx, tpath) self._fill_and_stroke(ctx, rgbFace, gc.get_alpha()) + ctx.restore() def draw_image(self, x, y, im, bbox, clippath=None, clippath_trans=None): # bbox - not currently used @@ -164,9 +184,16 @@ buf, cairo.FORMAT_ARGB32, cols, rows, cols*4) # function does not pass a 'gc' so use renderer.ctx ctx = self.ctx + ctx.save() + if clippath is not None: + tpath = clippath_trans.transform_path(clippath) + ctx.new_path() + RendererCairo.convert_path(ctx, tpath) + ctx.clip() y = self.height - y - rows ctx.set_source_surface (surface, x, y) ctx.paint() + ctx.restore() im.flipud_out() @@ -324,31 +351,10 @@ def set_clip_rectangle(self, rectangle): self._cliprect = rectangle - if rectangle is None: - return - x,y,w,h = rectangle.bounds - # pixel-aligned clip-regions are faster - x,y,w,h = round(x), round(y), round(w), round(h) - ctx = self.ctx - ctx.new_path() - ctx.rectangle (x, self.renderer.height - h - y, w, h) - ctx.clip () - # Alternative: just set _cliprect here and actually set cairo clip rect - # in fill_and_stroke() inside ctx.save() ... ctx.restore() - - def set_clip_path(self, path): - if path is not None: - tpath, affine = path.get_transformed_path_and_affine() - ctx = self.ctx - ctx.new_path() - affine = affine + Affine2D().scale(1.0, -1.0).translate(0.0, self.renderer.height) - tpath = affine.transform_path(tpath) - RendererCairo.convert_path(ctx, tpath) - ctx.clip() + self._clippath = path - def set_dashes(self, offset, dashes): self._dashes = offset, dashes if dashes == None: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 6996 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6996&view=rev Author: mdboom Date: 2009年03月19日 12:55:07 +0000 (2009年3月19日) Log Message: ----------- Merged revisions 6995 via svnmerge from https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_98_5_maint ........ r6995 | mdboom | 2009年03月19日 08:52:46 -0400 (2009年3月19日) | 2 lines Fix wavy baseline with STIX fonts -- again. ........ Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/mathtext.py Property Changed: ---------------- trunk/matplotlib/ trunk/matplotlib/doc/pyplots/README trunk/matplotlib/doc/sphinxext/gen_gallery.py trunk/matplotlib/doc/sphinxext/gen_rst.py trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py Property changes on: trunk/matplotlib ___________________________________________________________________ Modified: svnmerge-integrated - /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-6990 + /branches/v0_91_maint:1-6428 /branches/v0_98_5_maint:1-6995 Modified: svn:mergeinfo - /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990 + /branches/v0_91_maint:5753-5771 /branches/v0_98_5_maint:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6809,6811,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6906-6909,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 Property changes on: trunk/matplotlib/doc/pyplots/README ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990 + /branches/v0_98_5_maint/doc/pyplots/README:6581,6585,6587,6589-6609,6614,6616,6625,6652,6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 Property changes on: trunk/matplotlib/doc/sphinxext/gen_gallery.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990 + /branches/v0_91_maint/doc/_templates/gen_gallery.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_gallery.py:6660-6662,6672-6673,6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 Property changes on: trunk/matplotlib/doc/sphinxext/gen_rst.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990 + /branches/v0_91_maint/doc/examples/gen_rst.py:5753-5771 /branches/v0_98_5_maint/doc/sphinxext/gen_rst.py:6714-6715,6717-6732,6752-6754,6761-6773,6781,6792,6800,6802,6805,6822,6827,6850,6854,6856,6859,6861-6873,6883-6884,6886,6890-6891,6911-6912,6915-6916,6918,6920-6925,6927-6928,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 Modified: trunk/matplotlib/lib/matplotlib/mathtext.py =================================================================== --- trunk/matplotlib/lib/matplotlib/mathtext.py 2009年03月19日 12:52:46 UTC (rev 6995) +++ trunk/matplotlib/lib/matplotlib/mathtext.py 2009年03月19日 12:55:07 UTC (rev 6996) @@ -201,7 +201,7 @@ def render_glyph(self, ox, oy, info): info.font.draw_glyph_to_bitmap( - self.image, ox, oy - info.metrics.ymax, info.glyph) + self.image, ox, oy - info.metrics.iceberg, info.glyph) def render_rect_filled(self, x1, y1, x2, y2): height = max(int(y2 - y1) - 1, 0) Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/mathmpl.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990 + /branches/v0_91_maint/doc/sphinxext/mathmpl.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/mathmpl.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/only_directives.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990 + /branches/v0_91_maint/doc/sphinxext/only_directives.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/only_directives.py:6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 Property changes on: trunk/matplotlib/lib/matplotlib/sphinxext/plot_directive.py ___________________________________________________________________ Modified: svn:mergeinfo - /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990 + /branches/v0_91_maint/doc/sphinxext/plot_directive.py:5753-5771 /branches/v0_98_5_maint/lib/matplotlib/sphinxext/plot_directive.py:6920-6925,6934,6941,6946,6948,6950,6952,6960,6972,6984-6985,6990,6995 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 6995 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6995&view=rev Author: mdboom Date: 2009年03月19日 12:52:46 +0000 (2009年3月19日) Log Message: ----------- Fix wavy baseline with STIX fonts -- again. Modified Paths: -------------- branches/v0_98_5_maint/lib/matplotlib/mathtext.py Modified: branches/v0_98_5_maint/lib/matplotlib/mathtext.py =================================================================== --- branches/v0_98_5_maint/lib/matplotlib/mathtext.py 2009年03月18日 19:44:31 UTC (rev 6994) +++ branches/v0_98_5_maint/lib/matplotlib/mathtext.py 2009年03月19日 12:52:46 UTC (rev 6995) @@ -201,7 +201,7 @@ def render_glyph(self, ox, oy, info): info.font.draw_glyph_to_bitmap( - self.image, ox, oy - info.metrics.ymax, info.glyph) + self.image, ox, oy - info.metrics.iceberg, info.glyph) def render_rect_filled(self, x1, y1, x2, y2): height = max(int(y2 - y1) - 1, 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.