You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
| 2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
| 2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
| 2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
| 2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
| 2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
| 2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
| 2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
| 2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
| 2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
| 2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
| 2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
| 2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
| 2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
1
(3) |
2
(21) |
3
(16) |
4
(4) |
5
(7) |
|
6
(1) |
7
(2) |
8
(12) |
9
(23) |
10
(6) |
11
(2) |
12
(1) |
|
13
(1) |
14
(4) |
15
(14) |
16
(7) |
17
(15) |
18
(12) |
19
(5) |
|
20
|
21
(1) |
22
(7) |
23
(7) |
24
(6) |
25
(5) |
26
(9) |
|
27
(6) |
28
(4) |
29
(4) |
30
(27) |
|
|
|
|
From: Alan J. <aja...@op...> - 2005-11-25 16:05:32
|
Wasn't that simple... sigh. I'll keep looking. On Fri, 25 Nov 2005 10:17:57 +0100 "phi...@ho..." <phi...@ho...> wrote: > Hi Alan, > > You'll see Python exceptions are obvious enough. > > Here it looks like windows doesn't support the ".1". > Try 0.1 instead. > > Hope it will solve the problem. ;-) > Regards, > Philippe Collet > > >Message: 6 > >Date: Thu, 24 Nov 2005 22:16:48 -0600 > >From: Alan Jackson <aja...@op...> > >To: mat...@li... > >Subject: [Matplotlib-users] Incompatibility between Linux and XP > > > >I'm a new python user, basically trying to learn python using matplotlib > >for a little project. > > > >My code works fine on Linux, but it fails on Windows XP. I'm running > >the latest version of Matplotlib and SciPy python, 2.3.3. > > > >Before I go to a lot of effort to build a small demo program to show the > >failure, I thought I would ask to see of there are known incompatibilities > >between Linux and XP that might be causing my problem. > > > >The line of code that seems to precipitate the failure is : > > > >self.Cax_c = figtext(0.84, .1, '000') > > > >that gives an error on Windows XP of : > > > >.....matplotlib\text.py", line 665 in set_text > >TypeError: This doesn't look like a string: '0.0' > > > >Thanks! > > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ----------------------------------------------------------------------- | Alan K. Jackson | To see a World in a Grain of Sand | | al...@aj... | And a Heaven in a Wild Flower, | | www.ajackson.org | Hold Infinity in the palm of your hand | | Houston, Texas | And Eternity in an hour. - Blake | ----------------------------------------------------------------------- |
|
From: Xavier G. <gn...@ob...> - 2005-11-25 15:52:40
|
Hi, Here is a testcase : a=range(10) b=rand(10) plot(a,b,'x') axis([0.,1e-7,0.,1.]) Segmentation fault This test have been done with last matplotlib version (0.85) and TkAgg backend + python2.3. I haven't had time to look at the code for now but it sounds like a "divide by zero + malloc" in the code computing the symbol possition on the image. Ok, this is a wired corner case but I have a real testcase (too long to be posted here) where this crash occurs. I also have tested without symbols : a=range(10) b=rand(10) plot(a,b) axis([0.,1e-7,0.,1.]) and the result looks good and no crash occurs. Thanks for your job on matplotlib :) Xavier. |
|
From: <phi...@ho...> - 2005-11-25 09:18:06
|
Hi Alan, You'll see Python exceptions are obvious enough. Here it looks like windows doesn't support the ".1". Try 0.1 instead. Hope it will solve the problem. ;-) Regards, Philippe Collet >Message: 6 >Date: Thu, 24 Nov 2005 22:16:48 -0600 >From: Alan Jackson <aja...@op...> >To: mat...@li... >Subject: [Matplotlib-users] Incompatibility between Linux and XP > >I'm a new python user, basically trying to learn python using matplotlib >for a little project. > >My code works fine on Linux, but it fails on Windows XP. I'm running >the latest version of Matplotlib and SciPy python, 2.3.3. > >Before I go to a lot of effort to build a small demo program to show the >failure, I thought I would ask to see of there are known incompatibilities >between Linux and XP that might be causing my problem. > >The line of code that seems to precipitate the failure is : > >self.Cax_c = figtext(0.84, .1, '000') > >that gives an error on Windows XP of : > >.....matplotlib\text.py", line 665 in set_text >TypeError: This doesn't look like a string: '0.0' > >Thanks! > |
|
From: Alan J. <aja...@op...> - 2005-11-25 04:16:59
|
I'm a new python user, basically trying to learn python using matplotlib for a little project. My code works fine on Linux, but it fails on Windows XP. I'm running the latest version of Matplotlib and SciPy python, 2.3.3. Before I go to a lot of effort to build a small demo program to show the failure, I thought I would ask to see of there are known incompatibilities between Linux and XP that might be causing my problem. The line of code that seems to precipitate the failure is : self.Cax_c = figtext(0.84, .1, '000') that gives an error on Windows XP of : .....matplotlib\text.py", line 665 in set_text TypeError: This doesn't look like a string: '0.0' Thanks! -- ----------------------------------------------------------------------- | Alan K. Jackson | To see a World in a Grain of Sand | | al...@aj... | And a Heaven in a Wild Flower, | | www.ajackson.org | Hold Infinity in the palm of your hand | | Houston, Texas | And Eternity in an hour. - Blake | ----------------------------------------------------------------------- |
|
From: Fernando P. <Fer...@co...> - 2005-11-24 17:39:37
|
Eric Emsellem wrote: > Hi, > I finally got all softs installed (Atlas, scipy which was a real pain, > etc). Matplotlib is installing ok now, but I get two types of warnings > when I do "ipython -pylab": > 1/ seems that some lines in my matplotlibrc are wrong? (but I see the > same lines in the matplotlibrc on the web) > 2/ a GtkDeprecationWarning ==> gtk.timeout_add is deprecated... > > The second one was already posted some time ago and was "supposed to go > away with ipython 0.6.15" but this is what I am using right now, so... ? I think the fix was actually post-15, so for now just ignore it, or grab svn ipython which does contain the fix. Cheers, f |
|
From: <jao...@gm...> - 2005-11-24 14:50:32
|
On 23/11/05, Chris Barker <Chr...@no...> wrote: > Jos=E9 Matos wrote: > > What problems did you had with the version present in Extras? > > It turns out that my problem is that those packages didn't exist when I > installed core 4, which was pretty soon after it was released. That is fair. :-) > However, now that I've got you on line, atlas does not provide a > complete lapack implementation. What's the easiest way to get a complete > implementation, with as much optimized as possible? Quentin Spencer (the packager) send several messages explaining the deta= ils. One place where I have found it was here, there was also another message to fedora extras mailing list. http://www.octave.org/mailing-lists/help-octave/2005/3803 There he explains some of reasoning in package and also how to build a customized local package. Notice that other packages, i.e. blas and lapack, are prepared to work with a custom package. > Also, I note that there are versions for SSE, SSE2, and 3dnow. do you > know a good source for figuring out which of these a given processor > has, and what if you have both 3dnow and SSE2? That is explained above. For now the package follows the same scheme as debian. One goal is that later the package chooses on real time the best version to use, using ld to find the right version depending on the arch used. > -Chris > > > > -- > Christopher Barker, Ph.D. > Oceanographer > > NOAA/OR&R/HAZMAT (206) 526-6959 voice > 7600 Sand Point Way NE (206) 526-6329 fax > Seattle, WA 98115 (206) 526-6317 main reception > > Chr...@no... > -- Jos=E9 Matos |
|
From: Darren D. <dd...@co...> - 2005-11-24 13:45:53
|
Hi Eric,
Take a look at the new matplotlibrc that is included mpl. tick rc options have
recently been moved to independent xtick and ytick options. The gtk warning
you can ignore.
Darren
On Thursday 24 November 2005 6:39 am, Eric Emsellem wrote:
> Hi,
> I finally got all softs installed (Atlas, scipy which was a real pain,
> etc). Matplotlib is installing ok now, but I get two types of warnings
> when I do "ipython -pylab":
> 1/ seems that some lines in my matplotlibrc are wrong? (but I see the
> same lines in the matplotlibrc on the web)
> 2/ a GtkDeprecationWarning ==> gtk.timeout_add is deprecated...
>
> The second one was already posted some time ago and was "supposed to go
> away with ipython 0.6.15" but this is what I am using right now, so... ?
>
> If anybody has a clue on these two items.
> thanks in advance.
> Attached is my matplotlibrc, and below the output of what I get when
> launching ipython -pylab.
>
> thanks
>
> Eric
> Summary config: Linux Suse10.0, python2.4.1, matplotlib-0.85, ipython
> 0.6.15,
> ==============
> # ipython -pylab
>
> /usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
> UserWarning: Bad key "lines.data_clipping" on line 56 in /home/emsellem/
> .matplotlib/matplotlibrc
> warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
> /usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
> UserWarning: Bad key "tick.major.size" on line 143 in /home/emsellem/.ma
> tplotlib/matplotlibrc
> warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
> /usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
> UserWarning: Bad key "tick.minor.size" on line 144 in /home/emsellem/.ma
> tplotlib/matplotlibrc
> warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
> /usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
> UserWarning: Bad key "tick.major.pad" on line 145 in /home/emsellem/.mat
> plotlib/matplotlibrc
> warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
> /usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
> UserWarning: Bad key "tick.minor.pad" on line 146 in /home/emsellem/.mat
> plotlib/matplotlibrc
> warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
> /usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
> UserWarning: Bad key "tick.color" on line 147 in /home/emsellem/.matplot
> lib/matplotlibrc
> warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
> /usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
> UserWarning: Bad key "tick.labelsize" on line 148 in /home/emsellem/.mat
> plotlib/matplotlibrc
> warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
> loaded rc file /home/emsellem/.matplotlib/matplotlibrc
> matplotlib version 0.85
> verbose.level helpful
> interactive is False
> platform is linux2
> numerix numarray 1.4.1
> font search path ['/usr/share/matplotlib']
> $HOME=/home/emsellem
> CONFIGDIR=/home/emsellem/.matplotlib
> loaded ttfcache file /home/emsellem/.matplotlib/ttffont.cache
> matplotlib data path /usr/share/matplotlib
> backend GTKAgg version 2.8.0
> /usr/lib/python2.4/site-packages/IPython/Shell.py:627:
> GtkDeprecationWarning: gtk.timeout_add is deprecated, use
> gobject.timeout_add instead
> self.gtk.timeout_add(self.TIMEOUT, self.on_timer)
> Python 2.4.1 (#1, Sep 13 2005, 00:39:20)
> Type "copyright", "credits" or "license" for more information.
>
> IPython 0.6.15 -- An enhanced Interactive Python.
--
Darren S. Dale, Ph.D.
dd...@co...
|
|
From: Eric E. <ems...@ob...> - 2005-11-24 11:40:29
|
Hi,
I finally got all softs installed (Atlas, scipy which was a real pain,
etc). Matplotlib is installing ok now, but I get two types of warnings
when I do "ipython -pylab":
1/ seems that some lines in my matplotlibrc are wrong? (but I see the
same lines in the matplotlibrc on the web)
2/ a GtkDeprecationWarning ==> gtk.timeout_add is deprecated...
The second one was already posted some time ago and was "supposed to go
away with ipython 0.6.15" but this is what I am using right now, so... ?
If anybody has a clue on these two items.
thanks in advance.
Attached is my matplotlibrc, and below the output of what I get when
launching ipython -pylab.
thanks
Eric
Summary config: Linux Suse10.0, python2.4.1, matplotlib-0.85, ipython
0.6.15,
==============
# ipython -pylab
/usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
UserWarning: Bad key "lines.data_clipping" on line 56 in /home/emsellem/
.matplotlib/matplotlibrc
warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
/usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
UserWarning: Bad key "tick.major.size" on line 143 in /home/emsellem/.ma
tplotlib/matplotlibrc
warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
/usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
UserWarning: Bad key "tick.minor.size" on line 144 in /home/emsellem/.ma
tplotlib/matplotlibrc
warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
/usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
UserWarning: Bad key "tick.major.pad" on line 145 in /home/emsellem/.mat
plotlib/matplotlibrc
warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
/usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
UserWarning: Bad key "tick.minor.pad" on line 146 in /home/emsellem/.mat
plotlib/matplotlibrc
warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
/usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
UserWarning: Bad key "tick.color" on line 147 in /home/emsellem/.matplot
lib/matplotlibrc
warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
/usr/lib/python2.4/site-packages/matplotlib/__init__.py:843:
UserWarning: Bad key "tick.labelsize" on line 148 in /home/emsellem/.mat
plotlib/matplotlibrc
warnings.warn('Bad key "%s" on line %d in %s' % (key, cnt, fname))
loaded rc file /home/emsellem/.matplotlib/matplotlibrc
matplotlib version 0.85
verbose.level helpful
interactive is False
platform is linux2
numerix numarray 1.4.1
font search path ['/usr/share/matplotlib']
$HOME=/home/emsellem
CONFIGDIR=/home/emsellem/.matplotlib
loaded ttfcache file /home/emsellem/.matplotlib/ttffont.cache
matplotlib data path /usr/share/matplotlib
backend GTKAgg version 2.8.0
/usr/lib/python2.4/site-packages/IPython/Shell.py:627:
GtkDeprecationWarning: gtk.timeout_add is deprecated, use
gobject.timeout_add instead
self.gtk.timeout_add(self.TIMEOUT, self.on_timer)
Python 2.4.1 (#1, Sep 13 2005, 00:39:20)
Type "copyright", "credits" or "license" for more information.
IPython 0.6.15 -- An enhanced Interactive Python.
|
|
From: Christian K. <ck...@ho...> - 2005-11-24 10:12:03
|
Eric Emsellem wrote: > Hi, > trying to install matplotlib 0.85 on python 2.4 (Suse 10.0), I get : > > ===> cannot find tcl/tk headers. giving up. > > this is annoying and I cannot find much on the web to help me there. I > have checked my libraries and soft (including the "devel") and think I > have everything updated right. > > It is probably a simple pb, so if anybody has a hint there; > > thanks in advance. > > Eric > P.S.: by the way, upgrading my Linux (Suse 10.0) and therefore getting > python 2.4, I have now to reinstall everything from scratch (python > modules) and this is a REAL pain (for example ATLAS which takes ages and > so on). It means for me that I cannot work before having all back to > normal (all modules working such as ppgplot, gnuplot-py, Numeric, > numarray, Scipy, matplotlib, etc, etc). And I am not even sure this will > compile with Python 2.4. Anybody knows a way out of this? I was wrong about the tk/tcl issues. It is not solved by installing the devel rpms. So you could do what Arndt proposed or live without the tk backend by setting BUILD_TKAGG=0. Anyway I just wanted to tell that building scipy from svn and matplotlib 0.85 was really straightforward on SuSE 10.0 with gcc4 and python2.4. Concerning the ATLAS libs: I built them once some years ago and since that time I used them on every freshly installed system without problems as long as the architecture was the same (P4 32 bit). Probably the optimization suffers a bit by doing so but I don't care that much for speed. If you like I can send you the ATLAS binaries. Regards, Christian |
|
From: Alexander M. <ale...@co...> - 2005-11-24 03:34:08
|
from __future__ import division, generators
import math, sys
from numerix import absolute, arange, array, asarray, ones, divide,\
transpose, log, log10, Float, Float32, ravel, zeros,\
Int16, Int32, Int, Float64, ceil, indices, \
shape, which, where, sqrt, asum, compress, maximum, minimum
import numerix.ma as ma
import matplotlib.mlab
from artist import Artist, setp
from axis import XAxis, YAxis
from cbook import iterable, is_string_like, flatten, enumerate, \
allequal, dict_delall, popd, popall, silent_list
from collections import RegularPolyCollection, PolyCollection, =
LineCollection
from colors import colorConverter, normalize, Colormap, =
LinearSegmentedColormap, looks_like_color
import cm
#from cm import ColormapJet, Grayscale, ScalarMappable
from cm import ScalarMappable
from contour import ContourSet
import _image
from ticker import AutoLocator, LogLocator, NullLocator
from ticker import ScalarFormatter, LogFormatter, LogFormatterExponent, =
LogFormatterMathtext, NullFormatter
from image import AxesImage
from legend import Legend
from lines import Line2D, lineStyles, lineMarkers
from matplotlib.mlab import meshgrid, detrend_none, detrend_linear, \
window_none, window_hanning, linspace, prctile
from matplotlib.numerix.mlab import flipud, amin, amax
from matplotlib import rcParams
from patches import Patch, Rectangle, Circle, Polygon, Arrow, Wedge, =
Shadow, bbox_artist
from table import Table
from text import Text, TextWithDash, _process_text_args
from transforms import Bbox, Point, Value, Affine, =
NonseparableTransformation
from transforms import FuncXY, Func, LOG10, IDENTITY, POLAR
from transforms import get_bbox_transform, unit_bbox, one, origin, zero
from transforms import blend_xy_sep_transform, Interval
from font_manager import FontProperties
import matplotlib
if matplotlib._havedate:
from dates import date_ticker_factory
def _process_plot_format(fmt):
"""
Process a matlab(TM) style color/line style format string. Return a
linestyle, color tuple as a result of the processing. Default
values are ('-', 'b'). Example format strings include
'ko' : black circles
'.b' : blue dots
'r--' : red dashed lines
See Line2D.lineStyles and GraphicsContext.colors for all possible
styles and color format string.
"""
colors =3D {
'b' : 1,
'g' : 1,
'r' : 1,
'c' : 1,
'm' : 1,
'y' : 1,
'k' : 1,
'w' : 1,
}
linestyle =3D 'None'
marker =3D 'None'
color =3D rcParams['lines.color']
# handle the multi char special cases and strip them from the
# string
if fmt.find('--')>=3D0:
linestyle =3D '--'
fmt =3D fmt.replace('--', '')
if fmt.find('-.')>=3D0:
linestyle =3D '-.'
fmt =3D fmt.replace('-.', '')
chars =3D [c for c in fmt]
for c in chars:
if lineStyles.has_key(c):
if linestyle !=3D 'None':
raise ValueError, 'Illegal format string "%s"; two =
linestyle symbols' % fmt
linestyle =3D c
elif lineMarkers.has_key(c):
if marker !=3D 'None':
raise ValueError, 'Illegal format string "%s"; two =
marker symbols' % fmt
marker =3D c
elif colors.has_key(c):
color =3D c
else:
err =3D 'Unrecognized character %c in format string' % c
raise ValueError, err
if linestyle =3D=3D 'None' and marker =3D=3D 'None':
linestyle =3D rcParams['lines.linestyle']
return linestyle, marker, color
class _process_plot_var_args:
"""
Process variable length arguments to the plot command, so that
plot commands like the following are supported
plot(t, s)
plot(t1, s1, t2, s2)
plot(t1, s1, 'ko', t2, s2)
plot(t1, s1, 'ko', t2, s2, 'r--', t3, e3)
an arbitrary number of x, y, fmt are allowed
"""
def __init__(self, command=3D'plot'):
self.command =3D command
self._clear_color_cycle()
def _clear_color_cycle(self):
self.colors =3D ['b','g','r','c','m','y','k']
# if the default line color is a color format string, move it up
# in the que
try: ind =3D self.colors.index(rcParams['lines.color'])
except ValueError:
self.firstColor =3D rcParams['lines.color']
else:
self.colors[0], self.colors[ind] =3D self.colors[ind], =
self.colors[0]
self.firstColor =3D self.colors[0]
self.Ncolors =3D len(self.colors)
self.count =3D 0
def __call__(self, *args, **kwargs):
ret =3D self._grab_next_args(*args, **kwargs)
return ret
def set_lineprops(self, line, **kwargs):
assert self.command =3D=3D 'plot', 'set_lineprops only works =
with "plot"'
for key, val in kwargs.items():
funcName =3D "set_%s"%key
if not hasattr(line,funcName):
raise TypeError, 'There is no line property "%s"'%key
func =3D getattr(line,funcName)
func(val)
def set_patchprops(self, fill_poly, **kwargs):
assert self.command =3D=3D 'fill', 'set_patchprops only works =
with "fill"'
for key, val in kwargs.items():
funcName =3D "set_%s"%key
if not hasattr(fill_poly,funcName):
raise TypeError, 'There is no patch property "%s"'%key
func =3D getattr(fill_poly,funcName)
func(val)
def is_filled(self, marker):
filled =3D ('o', '^', 'v', '<', '>', 's',
'd', 'D', 'h', 'H',
'p')
return marker in filled
def _plot_1_arg(self, y, **kwargs):
assert self.command =3D=3D 'plot', 'fill needs at least 2 =
arguments'
if self.count=3D=3D0:
color =3D self.firstColor
else:
color =3D self.colors[int(self.count % self.Ncolors)]
assert(iterable(y))
try: N=3Dmax(y.shape)
except AttributeError: N =3D len(y)
ret =3D Line2D(arange(N), y,
color =3D color,
markerfacecolor=3Dcolor,
)
self.set_lineprops(ret, **kwargs)
self.count +=3D 1
return ret
def _plot_2_args(self, tup2, **kwargs):
if is_string_like(tup2[1]):
assert self.command =3D=3D 'plot', 'fill needs at least 2 =
non-string arguments'
y, fmt =3D tup2
assert(iterable(y))
linestyle, marker, color =3D _process_plot_format(fmt)
if self.is_filled(marker): mec =3D None # use default
else: mec =3D color # use current color
try: N=3Dmax(y.shape)
except AttributeError: N =3D len(y)
ret =3D Line2D(xdata=3Darange(N), ydata=3Dy,
color=3Dcolor, linestyle=3Dlinestyle, =
marker=3Dmarker,
markerfacecolor=3Dcolor,
markeredgecolor=3Dmec,
)
self.set_lineprops(ret, **kwargs)
return ret
else:
x,y =3D tup2
#print self.count, self.Ncolors, self.count % self.Ncolors
assert(iterable(x))
assert(iterable(y))
if self.command =3D=3D 'plot':
c =3D self.colors[self.count % self.Ncolors]
ret =3D Line2D(x, y,
color =3D c,
markerfacecolor =3D c,
)
self.set_lineprops(ret, **kwargs)
self.count +=3D 1
elif self.command =3D=3D 'fill':
ret =3D Polygon( zip(x,y), fill=3DTrue, )
self.set_patchprops(ret, **kwargs)
return ret
def _plot_3_args(self, tup3, **kwargs):
if self.command =3D=3D 'plot':
x, y, fmt =3D tup3
assert(iterable(x))
assert(iterable(y))
linestyle, marker, color =3D _process_plot_format(fmt)
if self.is_filled(marker): mec =3D None # use default
else: mec =3D color # use current color
ret =3D Line2D(x, y, color=3Dcolor,
linestyle=3Dlinestyle, marker=3Dmarker,
markerfacecolor=3Dcolor,
markeredgecolor=3Dmec,
)
self.set_lineprops(ret, **kwargs)
if self.command =3D=3D 'fill':
x, y, facecolor =3D tup3
ret =3D Polygon(zip(x,y),
facecolor =3D facecolor,
fill=3DTrue,
)
self.set_patchprops(ret, **kwargs)
return ret
def _grab_next_args(self, *args, **kwargs):
remaining =3D args
while 1:
if len(remaining)=3D=3D0: return
if len(remaining)=3D=3D1:
yield self._plot_1_arg(remaining[0], **kwargs)
remaining =3D []
continue
if len(remaining)=3D=3D2:
yield self._plot_2_args(remaining, **kwargs)
remaining =3D []
continue
if len(remaining)=3D=3D3:
if not is_string_like(remaining[2]):
raise ValueError, 'third arg must be a format =
string'
yield self._plot_3_args(remaining, **kwargs)
remaining=3D[]
continue
if is_string_like(remaining[2]):
yield self._plot_3_args(remaining[:3], **kwargs)
remaining=3Dremaining[3:]
else:
yield self._plot_2_args(remaining[:2], **kwargs)
remaining=3Dremaining[2:]
#yield self._plot_2_args(remaining[:2])
#remaining=3Dargs[2:]
BinOpType=3Dtype(zero())
def makeValue(v):
if type(v) =3D=3D BinOpType:
return v
else:
return Value(v)
class Axes(Artist):
"""
Emulate matlab's (TM) axes command, creating axes with
Axes(position=3D[left, bottom, width, height])
where all the arguments are fractions in [0,1] which specify the
fraction of the total figure window.
axisbg is the color of the axis background
"""
scaled =3D {IDENTITY : 'linear',
LOG10 : 'log',
}
def __init__(self, fig, rect,
axisbg =3D None, # defaults to rc axes.facecolor
frameon =3D True,
sharex=3DNone, # use Axes instance's xaxis info
sharey=3DNone, # use Axes instance's yaxis info
label=3D'',
**kwargs
):
Artist.__init__(self)
self._position =3D map(makeValue, rect)
# must be set before set_figure
self._sharex =3D sharex
self._sharey =3D sharey
self.set_label(label)
self.set_figure(fig)
# this call may differ for non-sep axes, eg polar
self._init_axis()
if axisbg is None: axisbg =3D rcParams['axes.facecolor']
self._axisbg =3D axisbg
self._frameon =3D frameon
self._axisbelow =3D False # todo make me an rcparam
self._hold =3D rcParams['axes.hold']
self._connected =3D {} # a dict from events to (id, func)
self.cla()
# funcs used to format x and y - fall back on major formatters
self.fmt_xdata =3D None
self.fmt_ydata =3D None
self.set_cursor_props((1,'k')) # set the cursor properties for =
axes
self._cachedRenderer =3D None
self.set_navigate(True)
# aspect ration atribute, and original position
self._aspect =3D 'normal'
self._originalPosition =3D self.get_position()
if len(kwargs): setp(self, **kwargs)
def _init_axis(self):
"move this out of __init__ because non-separable axes don't use =
it"
self.xaxis =3D XAxis(self)
self.yaxis =3D YAxis(self)
def set_cursor_props(self, *args):
"""
Set the cursor property as
ax.set_cursor_props(linewidth, color) OR
ax.set_cursor_props((linewidth, color))
ACCEPTS: a (float, color) tuple
"""
if len(args)=3D=3D1:
lw, c =3D args[0]
elif len(args)=3D=3D2:
lw, c =3D args
else:
raise ValueError('args must be a (linewidth, color) tuple')
c =3DcolorConverter.to_rgba(c)
self._cursorProps =3D lw, c
def get_cursor_props(self):
"""return the cursor props as a linewidth, color tuple where
linewidth is a float and color is an RGBA tuple"""
return self._cursorProps
def set_figure(self, fig):
"""
Set the Axes figure
ACCEPTS: a Figure instance
"""
Artist.set_figure(self, fig)
l, b, w, h =3D self._position
xmin =3D fig.bbox.ll().x()
xmax =3D fig.bbox.ur().x()
ymin =3D fig.bbox.ll().y()
ymax =3D fig.bbox.ur().y()
figw =3D xmax-xmin
figh =3D ymax-ymin
self.left =3D l*figw
self.bottom =3D b*figh
self.right =3D (l+w)*figw
self.top =3D (b+h)*figh
self.bbox =3D Bbox( Point(self.left, self.bottom),
Point(self.right, self.top ),
)
#these will be updated later as data is added
self._set_lim_and_transforms()
def _set_lim_and_transforms(self):
"""
set the dataLim and viewLim BBox attributes and the
transData and transAxes Transformation attributes
"""
if self._sharex is not None:
left=3Dself._sharex.viewLim.ll().x()
right=3Dself._sharex.viewLim.ur().x()
else:
left=3Dzero()
right=3Done()
if self._sharey is not None:
bottom=3Dself._sharey.viewLim.ll().y()
top=3Dself._sharey.viewLim.ur().y()
else:
bottom=3Dzero()
top=3Done()
self.viewLim =3D Bbox(Point(left, bottom), Point(right, top))
self.dataLim =3D unit_bbox()
self.transData =3D get_bbox_transform(self.viewLim, self.bbox)
self.transAxes =3D get_bbox_transform(unit_bbox(), self.bbox)
if self._sharex:
self.transData.set_funcx(self._sharex.transData.get_funcx())
if self._sharey:
self.transData.set_funcy(self._sharey.transData.get_funcy())
def axhline(self, y=3D0, xmin=3D0, xmax=3D1, **kwargs):
"""
AXHLINE(y=3D0, xmin=3D0, xmax=3D1, **kwargs)
Axis Horizontal Line
Draw a horizontal line at y from xmin to xmax. With the default
values of xmin=3D0 and xmax=3D1, this line will always span the =
horizontal
extent of the axes, regardless of the xlim settings, even if you
change them, eg with the xlim command. That is, the horizontal =
extent
is in axes coords: 0=3Dleft, 0.5=3Dmiddle, 1.0=3Dright but the y =
location is
in data coordinates.
Return value is the Line2D instance. kwargs are the same as =
kwargs to
plot, and can be used to control the line properties. Eg
# draw a thick red hline at y=3D0 that spans the xrange
axhline(linewidth=3D4, color=3D'r')
# draw a default hline at y=3D1 that spans the xrange
axhline(y=3D1)
# draw a default hline at y=3D.5 that spans the the middle =
half of
# the xrange
axhline(y=3D.5, xmin=3D0.25, xmax=3D0.75)
"""
trans =3D blend_xy_sep_transform( self.transAxes, =
self.transData)
l, =3D self.plot([xmin,xmax], [y,y], transform=3Dtrans, =
**kwargs)
return l
def axvline(self, x=3D0, ymin=3D0, ymax=3D1, **kwargs):
"""
AXVLINE(x=3D0, ymin=3D0, ymax=3D1, **kwargs)
Axis Vertical Line
Draw a vertical line at x from ymin to ymax. With the default =
values
of ymin=3D0 and ymax=3D1, this line will always span the =
vertical extent
of the axes, regardless of the xlim settings, even if you change =
them,
eg with the xlim command. That is, the vertical extent is in =
axes
coords: 0=3Dbottom, 0.5=3Dmiddle, 1.0=3Dtop but the x location =
is in data
coordinates.
Return value is the Line2D instance. kwargs are the same as
kwargs to plot, and can be used to control the line properties. =
Eg
# draw a thick red vline at x=3D0 that spans the yrange
l =3D axvline(linewidth=3D4, color=3D'r')
# draw a default vline at x=3D1 that spans the yrange
l =3D axvline(x=3D1)
# draw a default vline at x=3D.5 that spans the the middle =
half of
# the yrange
axvline(x=3D.5, ymin=3D0.25, ymax=3D0.75)
"""
trans =3D blend_xy_sep_transform( self.transData, self.transAxes =
)
l, =3D self.plot([x,x], [ymin,ymax] , transform=3Dtrans, =
**kwargs)
return l
def axhspan(self, ymin, ymax, xmin=3D0, xmax=3D1, **kwargs):
"""
AXHSPAN(ymin, ymax, xmin=3D0, xmax=3D1, **kwargs)
Axis Horizontal Span. ycoords are in data units and x
coords are in axes (relative 0-1) units
Draw a horizontal span (regtangle) from ymin to ymax. With the
default values of xmin=3D0 and xmax=3D1, this always span the =
xrange,
regardless of the xlim settings, even if you change them, eg =
with the
xlim command. That is, the horizontal extent is in axes coords:
0=3Dleft, 0.5=3Dmiddle, 1.0=3Dright but the y location is in =
data
coordinates.
kwargs are the kwargs to Patch, eg
antialiased, aa
linewidth, lw
edgecolor, ec
facecolor, fc
the terms on the right are aliases
Return value is the patches.Polygon instance.
#draws a gray rectangle from y=3D0.25-0.75 that spans the =
horizontal
#extent of the axes
axhspan(0.25, 0.75, facecolor=3D0.5, alpha=3D0.5)
"""
trans =3D blend_xy_sep_transform( self.transAxes, self.transData =
)
verts =3D (xmin, ymin), (xmin, ymax), (xmax, ymax), (xmax, ymin)
p =3D Polygon(verts, **kwargs)
p.set_transform(trans)
self.add_patch(p)
return p
def axvspan(self, xmin, xmax, ymin=3D0, ymax=3D1, **kwargs):
"""
AXVSPAN(xmin, xmax, ymin=3D0, ymax=3D1, **kwargs)
axvspan : Axis Vertical Span. xcoords are in data units and y =
coords
are in axes (relative 0-1) units
Draw a vertical span (regtangle) from xmin to xmax. With the =
default
values of ymin=3D0 and ymax=3D1, this always span the yrange, =
regardless
of the ylim settings, even if you change them, eg with the ylim
command. That is, the vertical extent is in axes coords: =
0=3Dbottom,
0.5=3Dmiddle, 1.0=3Dtop but the y location is in data =
coordinates.
kwargs are the kwargs to Patch, eg
antialiased, aa
linewidth, lw
edgecolor, ec
facecolor, fc
the terms on the right are aliases
return value is the patches.Polygon instance.
# draw a vertical green translucent rectangle from x=3D1.25 =
to 1.55 that
# spans the yrange of the axes
axvspan(1.25, 1.55, facecolor=3D'g', alpha=3D0.5)
"""
trans =3D blend_xy_sep_transform( self.transData, self.transAxes =
)
verts =3D [(xmin, ymin), (xmin, ymax), (xmax, ymax), (xmax, =
ymin)]
p =3D Polygon(verts, **kwargs)
p.set_transform(trans)
self.add_patch(p)
return p
def format_xdata(self, x):
"""
Return x string formatted. This function will use the attribute
self.fmt_xdata if it is callable, else will fall back on the =
xaxis
major formatter
"""
try: return self.fmt_xdata(x)
except TypeError:
func =3D self.xaxis.get_major_formatter().format_data
val =3D func(x)
return val
def format_ydata(self, y):
"""
Return y string formatted. This function will use the attribute
self.fmt_ydata if it is callable, else will fall back on the =
yaxis
major formatter
"""
try: return self.fmt_ydata(y)
except TypeError:
func =3D self.yaxis.get_major_formatter().format_data
val =3D func(y)
return val
def format_coord(self, x, y):
'return a format string formatting the x, y coord'
=20
xs =3D self.format_xdata(x)
ys =3D self.format_ydata(y)
return 'x=3D%s, y=3D%s'%(xs,ys)
def has_data(self):
'return true if any artists have been added to axes'
return (
len(self.collections) +
len(self.images) +
len(self.lines) +
len(self.patches))>0
def _set_artist_props(self, a):
'set the boilerplate props for artists added to axes'
a.set_figure(self.figure)
if not a.is_transform_set():
a.set_transform(self.transData)
a.axes =3D self
def cla(self):
'Clear the current axes'
self.xaxis.cla()
self.yaxis.cla()
if self._sharex is not None:
self.xaxis.major =3D self._sharex.xaxis.major
self.xaxis.minor =3D self._sharex.xaxis.minor
if self._sharey is not None:
self.yaxis.major =3D self._sharey.yaxis.major
self.yaxis.minor =3D self._sharey.yaxis.minor
self._get_lines =3D _process_plot_var_args()
self._get_patches_for_fill =3D _process_plot_var_args('fill')
self._gridOn =3D rcParams['axes.grid']
self.lines =3D []
self.patches =3D []
self.texts =3D [] # text in axis coords
self.tables =3D []
self.artists =3D []
self.images =3D []
self.legend_ =3D None
self.collections =3D [] # collection.Collection instances
self._autoscaleon =3D True
self.grid(self._gridOn)
self.title =3D Text(
x=3D0.5, y=3D1.02, text=3D'',
=
fontproperties=3DFontProperties(size=3DrcParams['axes.titlesize']),
verticalalignment=3D'bottom',
horizontalalignment=3D'center',
)
self.title.set_transform(self.transAxes)
self.title.set_clip_box(None) =20
self._set_artist_props(self.title)
self.axesPatch =3D Rectangle(
xy=3D(0,0), width=3D1, height=3D1,
facecolor=3Dself._axisbg,
edgecolor=3DrcParams['axes.edgecolor'],
)
self.axesPatch.set_figure(self.figure)
self.axesPatch.set_transform(self.transAxes)
self.axesPatch.set_linewidth(rcParams['axes.linewidth'])
self.axison =3D True
def add_artist(self, a):
'Add any artist to the axes'
self.artists.append(a)
self._set_artist_props(a)
def add_collection(self, collection):
'add a Collection instance to Axes'
self.collections.append(collection)
self._set_artist_props(collection)
collection.set_clip_box(self.bbox)
def get_images(self):
'return a list of Axes images contained by the Axes'
return silent_list('AxesImage', self.images)
def get_xscale(self):
'return the xaxis scale string: log or linear'
return self.scaled[self.transData.get_funcx().get_type()]
def get_yscale(self):
'return the yaxis scale string: log or linear'
return self.scaled[self.transData.get_funcy().get_type()]
def update_datalim(self, xys):
'Update the data lim bbox with seq of xy tups'
# if no data is set currently, the bbox will ignore it's
# limits and set the bound to be the bounds of the xydata.
# Otherwise, it will compute the bounds of it's current data
# and the data in xydata
self.dataLim.update(xys, not self.has_data())
def update_datalim_numerix(self, x, y):
'Update the data lim bbox with seq of xy tups'
# if no data is set currently, the bbox will ignore it's
# limits and set the bound to be the bounds of the xydata.
# Otherwise, it will compute the bounds of it's current data
# and the data in xydata
#print type(x), type(y)
self.dataLim.update_numerix(x, y, not self.has_data())
def add_line(self, l):
'Add a line to the list of plot lines'
self._set_artist_props(l)
l.set_clip_box(self.bbox)
xdata =3D l.get_xdata(valid_only=3DTrue)
ydata =3D l.get_ydata(valid_only=3DTrue)
if l.get_transform() !=3D self.transData:
xys =3D self._get_verts_in_data_coords(
l.get_transform(), zip(xdata, ydata))
xdata =3D array([x for x,y in xys])
ydata =3D array([y for x,y in xys])
self.update_datalim_numerix( xdata, ydata )
#self.update_datalim(zip(xdata, ydata))
label =3D l.get_label()
if not label: l.set_label('line%d'%len(self.lines))
self.lines.append(l)
def _get_verts_in_data_coords(self, trans, xys):
if trans =3D=3D self.transData:
return xys
# data is not in axis data units. We must transform it to
# display and then back to data to get it in data units
xys =3D trans.seq_xy_tups(xys)
return [ self.transData.inverse_xy_tup(xy) for xy in xys]
def add_patch(self, p):
"""
Add a patch to the list of Axes patches; the clipbox will be
set to the Axes clipping box. If the transform is not set, it
wil be set to self.transData.
"""
self._set_artist_props(p)
p.set_clip_box(self.bbox)
xys =3D self._get_verts_in_data_coords(
p.get_transform(), p.get_verts())
#for x,y in xys: print x,y
self.update_datalim(xys)
self.patches.append(p)
def add_table(self, tab):
'Add a table instance to the list of axes tables'
self._set_artist_props(tab)
self.tables.append(tab)
def autoscale_view(self):
'autoscale the view limits using the data limits'
# if image data only just use the datalim
if not self._autoscaleon: return
if (len(self.images)>0 and
len(self.lines)=3D=3D0 and
len(self.patches)=3D=3D0):
self.set_xlim(self.dataLim.intervalx().get_bounds())
self.set_ylim(self.dataLim.intervaly().get_bounds())
return
locator =3D self.xaxis.get_major_locator()
self.set_xlim(locator.autoscale())
locator =3D self.yaxis.get_major_locator()
self.set_ylim(locator.autoscale())
if self._aspect =3D=3D 'equal': self.set_aspect('equal')
def quiver(self, U, V, *args, **kwargs ):
"""
QUIVER( X, Y, U, V )
QUIVER( U, V )
QUIVER( X, Y, U, V, S)
QUIVER( U, V, S )
QUIVER( ..., color=3DNone, width=3D1.0, cmap=3DNone,norm=3DNone =
)
Make a vector plot (U, V) with arrows on a grid (X, Y)
The optional arguments color and width are used to specify the =
color and width
of the arrow. color can be an array of colors in which case the =
arrows can be
colored according to another dataset.
If cm is specied and color is None, the colormap is used to give =
a color
according to the vector's length.
If color is a scalar field, the colormap is used to map the =
scalar to a color
If a colormap is specified and color is an array of color =
triplets, then the
colormap is ignored
width is a scalar that controls the width of the arrows
if S is specified it is used to scale the vectors. Use S=3D0 to =
disable automatic
scaling.
If S!=3D0, vectors are scaled to fit within the grid and then =
are multiplied by S.
"""
if not self._hold: self.cla()
do_scale =3D True
S =3D 1.0
if len(args)=3D=3D0:
# ( U, V )
U =3D asarray(U)
V =3D asarray(V)
X,Y =3D meshgrid( arange(U.shape[1]), arange(U.shape[0]) )
elif len(args)=3D=3D1:
# ( U, V, S )
U =3D asarray(U)
V =3D asarray(V)
X,Y =3D meshgrid( arange(U.shape[1]), arange(U.shape[0]) )
S =3D float(args[0])
do_scale =3D ( S !=3D 0.0 )
elif len(args)=3D=3D2:
# ( X, Y, U, V )
X =3D asarray(U)
Y =3D asarray(V)
U =3D asarray(args[0])
V =3D asarray(args[1])
elif len(args)=3D=3D3:
# ( X, Y, U, V )
X =3D asarray(U)
Y =3D asarray(V)
U =3D asarray(args[0])
V =3D asarray(args[1])
S =3D float(args[2])
do_scale =3D ( S !=3D 0.0 )
assert U.shape =3D=3D V.shape
assert X.shape =3D=3D Y.shape
assert U.shape =3D=3D X.shape
arrows =3D []
N =3D sqrt( U**2+V**2 )
if do_scale:
Nmax =3D maximum.reduce(maximum.reduce(N)) or 1 # account =
for div by zero
U =3D U*(S/Nmax)
V =3D V*(S/Nmax)
N =3D N*Nmax
alpha =3D kwargs.get('alpha', 1.0)
width =3D kwargs.get('width', 0.25)
norm =3D kwargs.get('norm', None)
cmap =3D kwargs.get('cmap', None)
vmin =3D kwargs.get('vmin', None)
vmax =3D kwargs.get('vmax', None)
color =3D kwargs.get('color', None)
shading =3D kwargs.get('shading', 'faceted')
C =3D None
I,J =3D U.shape
if color is not None and not looks_like_color(color):
clr =3D asarray(color)
if clr.shape=3D=3DU.shape:
C =3D array([ clr[i,j] for i in xrange(I) for j in =
xrange(J)])
elif clr.shape =3D=3D () and color:
# a scalar (1, True,...)
C =3D array([ N[i,j] for i in xrange(I) for j in =
xrange(J)])
else:
color =3D (0.,0.,0.,1.)
elif color is None:
color =3D (0.,0.,0.,1.)
else:
color =3D colorConverter.to_rgba( color, alpha )
arrows =3D [ Arrow(X[i,j],Y[i,j],U[i,j],V[i,j],0.1*S =
).get_verts()
for i in xrange(I) for j in xrange(J) ]
collection =3D PolyCollection(
arrows,
edgecolors =3D 'None',
facecolors =3D (color,),
antialiaseds =3D (1,),
linewidths =3D (width,),
)
if C is not None:
collection.set_array( C )
else:
collection.set_facecolor( (color,) )
collection.set_cmap(cmap)
collection.set_norm(norm)
if norm is not None:
collection.set_clim( vmin, vmax )
self.add_collection( collection )
lims =3D asarray(arrows)
_max =3D maximum.reduce( maximum.reduce( lims ))
_min =3D minimum.reduce( minimum.reduce( lims ))
self.update_datalim( [ tuple(_min), tuple(_max) ] )
self.autoscale_view()
return arrows
def bar(self, left, height, width=3D0.8, bottom=3D0,
color=3D'b', yerr=3DNone, xerr=3DNone, ecolor=3D'k', =
capsize=3D3
):
"""
BAR(left, height, width=3D0.8, bottom=3D0,
color=3D'b', yerr=3DNone, xerr=3DNone, ecolor=3D'k', =
capsize=3D3)
Make a bar plot with rectangles at
left, left+width, 0, height
left and height are Numeric arrays.
Return value is a list of Rectangle patch instances
BAR(left, height, width, bottom,
color, yerr, xerr, capsize, yoff)
xerr and yerr, if not None, will be used to generate =
errorbars
on the bar chart
color specifies the color of the bar
ecolor specifies the color of any errorbar
capsize determines the length in points of the error bar =
caps
The optional arguments color, width and bottom can be either
scalars or len(x) sequences
This enables you to use bar as the basis for stacked bar
charts, or candlestick plots
"""
if not self._hold: self.cla()
# left =3D asarray(left) - width/2
left =3D asarray(left)
height =3D asarray(height)
patches =3D []
# if color looks like a color string, an RGB tuple or a
# scalar, then repeat it by len(x)
if (is_string_like(color) or
(iterable(color) and len(color)=3D=3D3 and len(left)!=3D3) =
or
not iterable(color)):
color =3D [color]*len(left)
if not iterable(bottom):
bottom =3D array([bottom]*len(left), Float)
else:
bottom =3D asarray(bottom)
if not iterable(width):
width =3D array([width]*len(left), Float)
else:
width =3D asarray(width)
N =3D len(left)
assert len(bottom)=3D=3DN, 'bar arg bottom must be len(left)'
assert len(width)=3D=3DN, 'bar arg width must be len(left) or =
scalar'
assert len(height)=3D=3DN, 'bar arg height must be len(left) or =
scalar'
assert len(color)=3D=3DN, 'bar arg color must be len(left) or =
scalar'
args =3D zip(left, bottom, width, height, color)
for l, b, w, h, c in args:
if h<0:
b +=3D h
h =3D abs(h)
r =3D Rectangle(
xy=3D(l, b), width=3Dw, height=3Dh,
facecolor=3Dc,
)
self.add_patch(r)
patches.append(r)
if xerr is not None or yerr is not None:
self.errorbar(
left+0.5*width, bottom+height,
yerr=3Dyerr, xerr=3Dxerr,
fmt=3DNone, ecolor=3Decolor, capsize=3Dcapsize)
self.autoscale_view()
return patches
def boxplot(self, x, notch=3D0, sym=3D'b+', vert=3D1, whis=3D1.5,
positions=3DNone, widths=3DNone):
"""
boxplot(x, notch=3D0, sym=3D'+', vert=3D1, whis=3D1.5,
positions=3DNone, widths=3DNone)
Make a box and whisker plot for each column of x.
The box extends from the lower to upper quartile values
of the data, with a line at the median. The whiskers
extend from the box to show the range of the data. Flier
points are those past the end of the whiskers.
notch =3D 0 (default) produces a rectangular box plot.
notch =3D 1 will produce a notched box plot
sym (default 'b+') is the default symbol for flier points.
Enter an empty string ('') if you don't want to show fliers.
vert =3D 1 (default) makes the boxes vertical.
vert =3D 0 makes horizontal boxes. This seems goofy, but
that's how Matlab did it.
whis (default 1.5) defines the length of the whiskers as
a function of the inner quartile range. They extend to the
most extreme data point within ( whis*(75%-25%) ) data range.
positions (default 1,2,...,n) sets the horizontal positions of
the boxes. The ticks and limits are automatically set to match
the positions.
widths is either a scalar or a vector and sets the width of
each box. The default is 0.5, or 0.15*(distance between extreme
positions) if that is smaller.
x is a Numeric array
Returns a list of the lines added
"""
if not self._hold: self.cla()
holdStatus =3D self._hold
lines =3D []
x =3D asarray(x)
# if we've got a vector, reshape it
rank =3D len(x.shape)
if 1 =3D=3D rank:
x.shape =3D -1, 1
row, col =3D x.shape
# get some plot info
if positions is None:
positions =3D range(1, col + 1)
if widths is None:
distance =3D max(positions) - min(positions)
widths =3D distance * min(0.15, 0.5/distance)
if isinstance(widths, float) or isinstance(widths, int):
widths =3D ones((col,), 'd') * widths
# loop through columns, adding each to plot
self.hold(True)
for i,pos in enumerate(positions):
d =3D x[:,i]
# get median and quartiles
q1, med, q3 =3D prctile(d,[25,50,75])
# get high extreme
iq =3D q3 - q1
hi_val =3D q3 + whis*iq
wisk_hi =3D compress( d <=3D hi_val , d )
if len(wisk_hi) =3D=3D 0:
wisk_hi =3D q3
else:
wisk_hi =3D max(wisk_hi)
# get low extreme
lo_val =3D q1 - whis*iq
wisk_lo =3D compress( d >=3D lo_val, d )
if len(wisk_lo) =3D=3D 0:
wisk_lo =3D q1
else:
wisk_lo =3D min(wisk_lo)
# get fliers - if we are showing them
flier_hi =3D []
flier_lo =3D []
flier_hi_x =3D []
flier_lo_x =3D []
if len(sym) !=3D 0:
flier_hi =3D compress( d > wisk_hi, d )
flier_lo =3D compress( d < wisk_lo, d )
flier_hi_x =3D ones(flier_hi.shape[0]) * pos
flier_lo_x =3D ones(flier_lo.shape[0]) * pos
# get x locations for fliers, whisker, whisker cap and box =
sides
box_x_min =3D pos - widths[i] * 0.5
box_x_max =3D pos + widths[i] * 0.5
wisk_x =3D ones(2) * pos
cap_x_min =3D pos - widths[i] * 0.25
cap_x_max =3D pos + widths[i] * 0.25
cap_x =3D [cap_x_min, cap_x_max]
# get y location for median
med_y =3D [med, med]
# calculate 'regular' plot
if notch =3D=3D 0:
# make our box vectors
box_x =3D [box_x_min, box_x_max, box_x_max, box_x_min, =
box_x_min ]
box_y =3D [q1, q1, q3, q3, q1 ]
# make our median line vectors
med_x =3D [box_x_min, box_x_max]
# calculate 'notch' plot
else:
notch_max =3D med + 1.57*iq/sqrt(row)
notch_min =3D med - 1.57*iq/sqrt(row)
if notch_max > q3:
notch_max =3D q3
if notch_min < q1:
notch_min =3D q1
# make our notched box vectors
box_x =3D [box_x_min, box_x_max, box_x_max, cap_x_max, =
box_x_max, box_x_max, box_x_min, box_x_min, cap_x_min, box_x_min, =
box_x_min ]
box_y =3D [q1, q1, notch_min, med, notch_max, q3, q3, =
notch_max, med, notch_min, q1]
# make our median line vectors
med_x =3D [cap_x_min, cap_x_max]
med_y =3D [med, med]
# make a vertical plot . . .
if 1 =3D=3D vert:
l =3D self.plot(wisk_x, [q1, wisk_lo], 'b--',
wisk_x, [q3, wisk_hi], 'b--',
cap_x, [wisk_hi, wisk_hi], 'k-',
cap_x, [wisk_lo, wisk_lo], 'k-',
box_x, box_y, 'b-',
med_x, med_y, 'r-',
flier_hi_x, flier_hi, sym,
flier_lo_x, flier_lo, sym )
lines.extend(l)
# or perhaps a horizontal plot
else:
l =3D self.plot([q1, wisk_lo], wisk_x, 'b--',
[q3, wisk_hi], wisk_x, 'b--',
[wisk_hi, wisk_hi], cap_x, 'k-',
[wisk_lo, wisk_lo], cap_x, 'k-',
box_y, box_x, 'b-',
med_y, med_x, 'r-',
flier_hi, flier_hi_x, sym,
flier_lo, flier_lo_x, sym )
lines.extend(l)
# fix our axes/ticks up a little
if 1 =3D=3D vert:
setticks, setlim =3D self.set_xticks, self.set_xlim
else:
setticks, setlim =3D self.set_yticks, self.set_ylim
newlimits =3D min(positions)-0.5, max(positions)+0.5
setlim(newlimits)
setticks(positions)
=20
# reset hold status
self.hold(holdStatus)
return lines
def barh(self, x, y, height=3D0.8, left=3D0,
color=3D'b', yerr=3DNone, xerr=3DNone, ecolor=3D'k', =
capsize=3D3
):
"""
BARH(x, y, height=3D0.8, left=3D0,
color=3D'b', yerr=3DNone, xerr=3DNone, ecolor=3D'k', =
capsize=3D3)
BARH(x, y)
The y values give the heights of the center of the bars. =
The
x values give the length of the bars.
Return value is a list of Rectangle patch instances
Optional arguments
height - the height (thickness) of the bar
left - the x coordinate of the left side of the bar
color specifies the color of the bar
xerr and yerr, if not None, will be used to generate =
errorbars
on the bar chart
ecolor specifies the color of any errorbar
capsize determines the length in points of the error bar =
caps
The optional arguments color, height and left can be either
scalars or len(x) sequences
"""
if not self._hold: self.cla()
# left =3D asarray(left) - width/2
x =3D asarray(x)
y =3D asarray(y)
patches =3D []
# if color looks like a color string, and RGB tuple or a
# scalar, then repeat it by len(x)
if (is_string_like(color) or
(iterable(color) and len(color)=3D=3D3 and len(left)!=3D3) =
or
not iterable(color)):
color =3D [color]*len(x)
if not iterable(left):
left =3D array([left]*len(x), Float)
else:
left =3D asarray(left)
if not iterable(height):
height =3D array([height]*len(x), Float)
else:
height =3D asarray(height)
N =3D len(x)
assert len(left)=3D=3DN, 'bar arg left must be len(x)'
assert len(height)=3D=3DN, 'bar arg height must be len(x) or =
scalar'
assert len(y)=3D=3DN, 'bar arg y must be len(x) or scalar'
assert len(color)=3D=3DN, 'bar arg color must be len(x) or =
scalar'
width =3D x
right =3D left+x
bottom =3D y - height/2.
args =3D zip(left, bottom, width, height, color)
for l, b, w, h, c in args:
if h<0:
b +=3D h
h =3D abs(h)
r =3D Rectangle(
xy=3D(l, b), width=3Dw, height=3Dh,
facecolor=3Dc,
)
self.add_patch(r)
patches.append(r)
if xerr is not None or yerr is not None:
self.errorbar(
right, y,
yerr=3Dyerr, xerr=3Dxerr,
fmt=3DNone, ecolor=3Decolor, capsize=3Dcapsize)
self.autoscale_view()
return patches
def clear(self):
'clear the axes'
self.cla()
def clabel(self, CS, *args, **kwargs):
return CS.clabel(*args, **kwargs)
clabel.__doc__ =3D ContourSet.clabel.__doc__
def contour(self, *args, **kwargs):
kwargs['filled'] =3D False
return ContourSet(self, *args, **kwargs)
contour.__doc__ =3D ContourSet.contour_doc
def contourf(self, *args, **kwargs):
kwargs['filled'] =3D True
return ContourSet(self, *args, **kwargs)
contourf.__doc__ =3D ContourSet.contour_doc
def cohere(self, x, y, NFFT=3D256, Fs=3D2, detrend=3Ddetrend_none,
window=3Dwindow_hanning, noverlap=3D0, **kwargs):
"""
COHERE(x, y, NFFT=3D256, Fs=3D2, detrend=3Ddetrend_none,
window=3Dwindow_hanning, noverlap=3D0)
cohere the coherence between x and y. Coherence is the =
normalized
cross spectral density
Cxy =3D |Pxy|^2/(Pxx*Pyy)
The return value is (Cxy, f), where f are the frequencies of the
coherence vector.
See the PSD help for a description of the optional parameters.
kwargs are applied to the lines
Returns the tuple Cxy, freqs
Refs: Bendat & Piersol -- Random Data: Analysis and Measurement
Procedures, John Wiley & Sons (1986)
"""
if not self._hold: self.cla()
cxy, freqs =3D matplotlib.mlab.cohere(x, y, NFFT, Fs, detrend, =
window, noverlap)
self.plot(freqs, cxy, **kwargs)
self.set_xlabel('Frequency')
self.set_ylabel('Coherence')
self.grid(True)
return cxy, freqs
def csd(self, x, y, NFFT=3D256, Fs=3D2, detrend=3Ddetrend_none,
window=3Dwindow_hanning, noverlap=3D0):
"""
CSD(x, y, NFFT=3D256, Fs=3D2, detrend=3Ddetrend_none,
window=3Dwindow_hanning, noverlap=3D0)
The cross spectral density Pxy by Welches average periodogram =
method.
The vectors x and y are divided into NFFT length segments. Each
segment is detrended by function detrend and windowed by =
function
window. The product of the direct FFTs of x and y are averaged =
over
each segment to compute Pxy, with a scaling to correct for power =
loss
due to windowing.
See the PSD help for a description of the optional parameters.
Returns the tuple Pxy, freqs. Pxy is the cross spectrum =
(complex
valued), and 10*log10(|Pxy|) is plotted
Refs:
Bendat & Piersol -- Random Data: Analysis and Measurement
Procedures, John Wiley & Sons (1986)
"""
if not self._hold: self.cla()
pxy, freqs =3D matplotlib.mlab.csd(x, y, NFFT, Fs, detrend, =
window, noverlap)
pxy.shape =3D len(freqs),
# pxy is complex
self.plot(freqs, 10*log10(absolute(pxy)))
self.set_xlabel('Frequency')
self.set_ylabel('Cross Spectrum Magnitude (dB)')
self.grid(True)
vmin, vmax =3D self.viewLim.intervaly().get_bounds()
intv =3D vmax-vmin
step =3D 10*int(log10(intv))
ticks =3D arange(math.floor(vmin), math.ceil(vmax)+1, step)
self.set_yticks(ticks)
return pxy, freqs
def draw_artist(self, a):
"""
This method can only be used after an initial draw which
caches the renderer. It is used to efficiently update Axes
data (axis ticks, labels, etc are not updated)
"""
assert self._cachedRenderer is not None
a.draw(self._cachedRenderer)
def redraw_in_frame(self):
"""
This method can only be used after an initial draw which
caches the renderer. It is used to efficiently update Axes
data (axis ticks, labels, etc are not updated)
"""
assert self._cachedRenderer is not None
self.draw(self._cachedRenderer, inframe=3DTrue)
def get_renderer_cache(self):
return self._cachedRenderer
def draw(self, renderer=3DNone, inframe=3DFalse):
"Draw everything (plot lines, axes, labels)"
if renderer is None:
renderer =3D self._cachedRenderer
if renderer is None:
raise RuntimeError('No renderer defined')
if not self.get_visible(): return
renderer.open_group('axes')
try: self.transData.freeze() # eval the lazy objects
except ValueError:
print >> sys.stderr, 'data freeze value error', =
self.get_position(), self.dataLim.get_bounds(), =
self.viewLim.get_bounds()
raise
=20
self.transAxes.freeze() # eval the lazy objects
if self.axison:
if self._frameon: self.axesPatch.draw(renderer)
if len(self.images)=3D=3D1:
im =3D self.images[0]
im.draw(renderer)
elif len(self.images)>1:
# make a composite image blending alpha
# list of (_image.Image, ox, oy)
ims =3D [(im.make_image(),0,0) for im in self.images if =
im.get_visible()]
im =3D _image.from_images(self.bbox.height(), =
self.bbox.width(), ims)
im.is_grayscale =3D False
l, b, w, h =3D self.bbox.get_bounds()
renderer.draw_image(l, b, im, self.bbox)
# axis drawing was here, where contourf etc clobbered them
# draw axes here, so they are on top of most things
if self._axisbelow:
if self.axison and not inframe:
self.xaxis.draw(renderer)
self.yaxis.draw(renderer)
artists =3D []
artists.extend(self.collections)
artists.extend(self.patches)
artists.extend(self.lines)
artists.extend(self.texts)
# keep track of i to guarantee stable sort for python 2.2
dsu =3D [ (a.zorder, i, a) for i, a in enumerate(artists)
if not a.get_animated()]
dsu.sort()
for zorder, i, a in dsu:
a.draw(renderer)
self.title.draw(renderer)
if 0: bbox_artist(self.title, renderer)
# optional artists
for a in self.artists:
a.draw(renderer)
if not self._axisbelow:
if self.axison and not inframe:
self.xaxis.draw(renderer)
self.yaxis.draw(renderer)
if self.legend_ is not None:
self.legend_.draw(renderer)
for table in self.tables:
table.draw(renderer)
self.transData.thaw() # release the lazy objects
self.transAxes.thaw() # release the lazy objects
renderer.close_group('axes')
self._cachedRenderer =3D renderer
def __draw_animate(self):
# ignore for now; broken
if self._lastRenderer is None:
raise RuntimeError('You must first call ax.draw()')
dsu =3D [(a.zorder, a) for a in self.animated.keys()]
dsu.sort()
renderer =3D self._lastRenderer
renderer.blit()
for tmp, a in dsu:
a.draw(renderer)
def errorbar(self, x, y, yerr=3DNone, xerr=3DNone,
fmt=3D'b-', ecolor=3DNone, capsize=3D3,
barsabove=3DFalse, **kwargs):
"""
ERRORBAR(x, y, yerr=3DNone, xerr=3DNone,
fmt=3D'b-', ecolor=3DNone, capsize=3D3, =
barsabove=3DFalse)
Plot x versus y with error deltas in yerr and xerr.
Vertical errorbars are plotted if yerr is not None
Horizontal errorbars are plotted if xerr is not None
xerr and yerr may be any of:
a rank-0, Nx1 Numpy array - symmetric errorbars +/- value
an N-element list or tuple - symmetric errorbars +/- value
a rank-1, Nx2 Numpy array - asymmetric errorbars =
-column1/+column2
Alternatively, x, y, xerr, and yerr can all be scalars, which
plots a single error bar at x, y.
fmt is the plot format symbol for y. if fmt is None, just
plot the errorbars with no line symbols. This can be useful
for creating a bar plot with errorbars
ecolor is a matplotlib color arg which gives the color the
errorbar lines; if None, use the marker color.
capsize is the size of the error bar caps in points
barsabove, if True, will plot the errorbars above the plot =
symbols
- default is below
kwargs are passed on to the plot command for the markers.
So you can add additional key=3Dvalue pairs to control the
errorbar markers. For example, this code makes big red
squares with thick green edges
>>> x,y,yerr =3D rand(3,10)
>>> errorbar(x, y, yerr, marker=3D's',
mfc=3D'red', mec=3D'green', ms=3D20, mew=3D4)
mfc, mec, ms and mew are aliases for the longer property
names, markerfacecolor, markeredgecolor, markersize and
markeredgewith.
Return value is a length 2 tuple. The first element is the
Line2D instance for the y symbol lines. The second element is
a list of error bar lines.
"""
if not self._hold: self.cla()
# make sure all the args are iterable arrays
if not iterable(x): x =3D asarray([x])
else: x =3D asarray(x)
if not iterable(y): y =3D asarray([y])
else: y =3D asarray(y)
if xerr is not None:
if not iterable(xerr): xerr =3D asarray([xerr])
else: xerr =3D asarray(xerr)
if yerr is not None:
if not iterable(yerr): yerr =3D asarray([yerr])
else: yerr =3D asarray(yerr)
l0 =3D None
if barsabove and fmt is not None:
l0, =3D self.plot(x,y,fmt,**kwargs)
caplines =3D []
barlines =3D []
if xerr is not None:
if len(xerr.shape) =3D=3D 1:
left =3D x-xerr
right =3D x+xerr
else:
left =3D x-xerr[0]
right =3D x+xerr[1]
barlines.extend( self.hlines(y, x, left) )
barlines.extend( self.hlines(y, x, right) )
caplines.extend( self.plot(left, y, '|', ms=3D2*capsize) )
caplines.extend( self.plot(right, y, '|', ms=3D2*capsize) )
if yerr is not None:
if len(yerr.shape) =3D=3D 1:
lower =3D y-yerr
upper =3D y+yerr
else:
lower =3D y-yerr[0]
upper =3D y+yerr[1]
barlines.extend( self.vlines(x, y, upper ) )
barlines.extend( self.vlines(x, y, lower ) )
caplines.extend( self.plot(x, lower, '_', ms=3D2*capsize) )
caplines.extend( self.plot(x, upper, '_', ms=3D2*capsize) )
if not barsabove and fmt is not None:
l0, =3D self.plot(x,y,fmt,**kwargs)
if ecolor is None and l0 is None:
ecolor =3D rcParams['lines.color']
elif ecolor is None:
ecolor =3D l0.get_color()
for l in barlines:
l.set_color(ecolor)
for l in caplines:
l.set_color(ecolor)
l.set_markerfacecolor(ecolor)
l.set_markeredgecolor(ecolor)
self.autoscale_view()
ret =3D silent_list('Line2D errorbar', caplines+barlines)
return (l0, ret)
def fill(self, *args, **kwargs):
"""
FILL(*args, **kwargs)
plot filled polygons. *args is a variable length argument, =
allowing
for multiple x,y pairs with an optional color format string; see =
plot
for details on the argument parsing. For example, all of the
following are legal, assuming a is the Axis instance:
ax.fill(x,y) # plot polygon with vertices at x,y
ax.fill(x,y, 'b' ) # plot polygon with vertices at x,y in =
blue
An arbitrary number of x, y, color groups can be specified, as =
in
ax.fill(x1, y1, 'g', x2, y2, 'r')
Return value is a list of patches that were added
The same color strings that plot supports are supported by the =
fill
format string.
The kwargs that are can be used to set line properties (any
property that has a set_* method). You can use this to set edge
color, face color, etc.
"""
if not self._hold: self.cla()
patches =3D []
for poly in self._get_patches_for_fill(*args, **kwargs):
self.add_patch( poly )
patches.append( poly )
self.autoscale_view()
return patches
def get_axis_bgcolor(self):
'Return the axis background color'
return self._axisbg
def get_child_artists(self):
"""
Return a list of artists the axes contains. Deprecated
"""
artists =3D [self.title, self.axesPatch, self.xaxis, self.yaxis]
artists.extend(self.lines)
artists.extend(self.patches)
artists.extend(self.texts)
artists.extend(self.collections)
if self.legend_ is not None:
artists.append(self.legend_)
return silent_list('Artist', artists)
def get_frame(self):
'Return the axes Rectangle frame'
return self.axesPatch
def get_legend(self):
'Return the Legend instance, or None if no legend is defined'
return self.legend_
def get_lines(self):
'Return a list of lines contained by the Axes'
return silent_list('Line2D', self.lines)
def get_xaxis(self):
'Return the XAxis instance'
return self.xaxis
def get_xgridlines(self):
'Get the x grid lines as a list of Line2D instances'
return silent_list('Line2D xgridline', =
self.xaxis.get_gridlines())
def get_xlim(self):
'Get the x axis range [xmin, xmax]'
return self.viewLim.intervalx().get_bounds()
def get_xticklabels(self):
'Get the xtick labels as a list of Text instances'
return silent_list('Text xticklabel', =
self.xaxis.get_ticklabels())
def get_xticklines(self):
'Get the xtick lines as a list of Line2D instances'
return silent_list('Text xtickline', self.xaxis.get_ticklines())
def get_xticks(self):
'Return the x ticks as a list of locations'
return self.xaxis.get_ticklocs()
def get_yaxis(self):
'Return the YAxis instance'
return self.yaxis
def get_ylim(self):
'Get the y axis range [ymin, ymax]'
return self.viewLim.intervaly().get_bounds()
def get_ygridlines(self):
'Get the y grid lines as a list of Line2D instances'
return silent_list('Line2D ygridline', =
self.yaxis.get_gridlines())
def get_yticklabels(self):
'Get the ytick labels as a list of Text instances'
return silent_list('Text yticklabel', =
self.yaxis.get_ticklabels())
def get_yticklines(self):
'Get the ytick lines as a list of Line2D instances'
return silent_list('Line2D ytickline', =
self.yaxis.get_ticklines())
def get_yticks(self):
'Return the y ticks as a list of locations'
return self.yaxis.get_ticklocs()
def get_frame_on(self):
"""
Get whether the axes rectangle patch is drawn
"""
return self._frameon
def get_navigate(self):
"""
Get whether the axes responds to navigation commands
"""
return self._navigate
def get_axisbelow(self):
"""
Get whether axist below is true or not
"""
return self._axisbelow
def get_autoscale_on(self):
"""
Get whether autoscaling is applied on plot commands
"""
return self._autoscaleon
def grid(self, b=3DNone):
"""
Set the axes grids on or off; b is a boolean
if b is None, toggle the grid state
"""
self.xaxis.grid(b)
self.yaxis.grid(b)
def hist(self, x, bins=3D10, normed=3D0, bottom=3D0,
orientation=3D'vertical', width=3DNone, **kwargs):
"""
HIST(x, bins=3D10, normed=3D0, bottom=3D0, =
orientiation=3D'vertical', **kwargs)
Compute the histogram of x. bins is either an integer number of
bins or a sequence giving the bins. x are the data to be =
binned.
The return values is (n, bins, patches)
If normed is true, the first element of the return tuple will
be the counts normalized to form a probability density, ie,
n/(len(x)*dbin)
orientation =3D 'horizontal' | 'vertical'. If horizontal, barh
will be used and the "bottom" kwarg will be the left.
width: the width of the bars. If None, automatically compute
the width.
kwargs are used to update the properties of the
hist bars
"""
if not self._hold: self.cla()
n,bins =3D matplotlib.mlab.hist(x, bins, normed)
if width is None: width =3D 0.9*(bins[1]-bins[0])
if orienta...
[truncated message content] |
|
From: Chris B. <Chr...@no...> - 2005-11-23 19:01:27
|
José Matos wrote:
> What problems did you had with the version present in Extras?
It turns out that my problem is that those packages didn't exist when I
installed core 4, which was pretty soon after it was released.
However, now that I've got you on line, atlas does not provide a
complete lapack implementation. What's the easiest way to get a complete
implementation, with as much optimized as possible?
Also, I note that there are versions for SSE, SSE2, and 3dnow. do you
know a good source for figuring out which of these a given processor
has, and what if you have both 3dnow and SSE2?
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
NOAA/OR&R/HAZMAT (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chr...@no...
|
|
From: <jao...@gm...> - 2005-11-23 16:53:50
|
On 23/11/05, Chris Barker <Chr...@no...> wrote: > Arnd Baecker wrote: > > Another option is too choose debian (or ubuntu, ...) as distribution. > > Gentoo is quite friendly to python, atlas, etc as well, once you've got > a basic system installed. I've also had luck with Fedora Core 4, though > I was very surprised NOT to find good atlas rpms. What problems did you had with the version present in Extras? I am just curious, and the feedback is important to improve it. Note that= I am not the packager but I am clearly interested in good implementation of atla= s for fedora. > -- > Christopher Barker, Ph.D. > Oceanographer > > NOAA/OR&R/HAZMAT (206) 526-6959 voice > 7600 Sand Point Way NE (206) 526-6329 fax > Seattle, WA 98115 (206) 526-6317 main reception > > Chr...@no... -- Jos=E9 Matos |
|
From: Chris B. <Chr...@no...> - 2005-11-23 16:45:54
|
Arnd Baecker wrote:
> Another option is too choose debian (or ubuntu, ...) as distribution.
Gentoo is quite friendly to python, atlas, etc as well, once you've got
a basic system installed. I've also had luck with Fedora Core 4, though
I was very surprised NOT to find good atlas rpms.
Eric Emsellem wrote:
> P.S.: by the way, upgrading my Linux (Suse 10.0) and therefore getting
> python 2.4, I have now to reinstall everything from scratch (python
> modules) and this is a REAL pain
Yes, it sure is. Did the upgrade remove your python2.3 installation? If
not, you should be able to just use "python2.3" at the command line and
in your #! lines, and keep using the old install while you work on
getting everything you need into 2.4.
I always put a versioned python in my #! lines:
#!/usr/bin/env python2.3
So that I can install a new python, and still have any scripts I've got
working just keep working.
If the Suse upgrade did remove python2.3 -- shame on Suse.
-Chris
--
Christopher Barker, Ph.D.
Oceanographer
NOAA/OR&R/HAZMAT (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chr...@no...
|
|
From: Ryan K. <rya...@gm...> - 2005-11-23 13:38:05
|
I am running matplotlib and scipy on ubuntu and it really was pretty straight forward to install. But you may be tied to SUSE for other reasons or the idea of a complete reinstall may be completely unacceptable. ATLAS and BLAS and LAPACK are all available as precompiled packages on ubun= tu. Ryan On 11/23/05, Arnd Baecker <arn...@we...> wrote: > Hi Eric, > > installation issues can be frustrating - most of us have been > through what you encounter at the momemt (at least once ;-). > Don't give up! Some ideas below (I will also send you my > full install notes off-list - see also: > http://www.scipy.org/mailinglists/mailman?fn=3Dscipy-dev/2005-November/00= 3949.html > ) > > On Wed, 23 Nov 2005, Eric Emsellem wrote: > > > Hi, > > trying to install matplotlib 0.85 on python 2.4 (Suse 10.0), I get : > > > > =3D=3D=3D> cannot find tcl/tk headers. giving up. > > > > this is annoying and I cannot find much on the web to help me there. I > > have checked my libraries and soft (including the "devel") and think I > > have everything updated right. > > > > It is probably a simple pb, so if anybody has a hint there; > > In my notes for the installation under SUSE 10.0 I have: > > In setupext.py change: > > def find_tcltk(): > > [...] > > #o.tk_inc=3D"/usr/include/" > o.tcl_inc=3D"/usr/include/" > > if not os.path.exists(o.tcl_inc): > print 'cannot find tcl/tk headers. giving up.' > sys.exit() > return o > > Not sure if this will help you. > > > thanks in advance. > > > > Eric > > P.S.: by the way, upgrading my Linux (Suse 10.0) and therefore getting > > python 2.4, I have now to reinstall everything from scratch (python > > modules) and this is a REAL pain (for example ATLAS which takes ages an= d > > so on). > > ATLAS is surely the worst. Does any SUSE expert know, > whether there are ATLAS packages available? > > For downloads of precompiled ATLAS see: > http://www.scipy.org/download/atlasbinaries/linux/ > > > > It means for me that I cannot work before having all back to > > normal (all modules working such as ppgplot, gnuplot-py, Numeric, > > numarray, Scipy, matplotlib, etc, etc). And I am not even sure this wil= l > > compile with Python 2.4. Anybody knows a way out of this? > > Compilation of all these (don't know about ppgplot) worked > fine for me on SUSE 10.0 (even with 64 Bit, with kind help from the > sciy mailing list) and does not take too long. > > Another option is too choose debian (or ubuntu, ...) as distribution. > If you want to have up-to-date matplotlib, you can either compile > them yourself or try use use some of the pre-built ones > (eg. by John for ubuntu). Also for current scipy you will > have to install it yourself. > But ATLAS and basically anything else you might need is > avaible as .deb. > > Good luck, > > Arnd > > > > ------------------------------------------------------- > This SF.Net email is sponsored by the JBoss Inc. Get Certified Today > Register for a JBoss Training Course. Free Certification Exam > for All Training Attendees Through End of 2005. For more info visit: > http://ads.osdn.com/?ad_id=3D7628&alloc_id=3D16845&op=3Dclick > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
|
From: Arnd B. <arn...@we...> - 2005-11-23 12:14:57
|
Hi Eric, installation issues can be frustrating - most of us have been through what you encounter at the momemt (at least once ;-). Don't give up! Some ideas below (I will also send you my full install notes off-list - see also: http://www.scipy.org/mailinglists/mailman?fn=scipy-dev/2005-November/003949.html ) On Wed, 23 Nov 2005, Eric Emsellem wrote: > Hi, > trying to install matplotlib 0.85 on python 2.4 (Suse 10.0), I get : > > ===> cannot find tcl/tk headers. giving up. > > this is annoying and I cannot find much on the web to help me there. I > have checked my libraries and soft (including the "devel") and think I > have everything updated right. > > It is probably a simple pb, so if anybody has a hint there; In my notes for the installation under SUSE 10.0 I have: In setupext.py change: def find_tcltk(): [...] #o.tk_inc="/usr/include/" o.tcl_inc="/usr/include/" if not os.path.exists(o.tcl_inc): print 'cannot find tcl/tk headers. giving up.' sys.exit() return o Not sure if this will help you. > thanks in advance. > > Eric > P.S.: by the way, upgrading my Linux (Suse 10.0) and therefore getting > python 2.4, I have now to reinstall everything from scratch (python > modules) and this is a REAL pain (for example ATLAS which takes ages and > so on). ATLAS is surely the worst. Does any SUSE expert know, whether there are ATLAS packages available? For downloads of precompiled ATLAS see: http://www.scipy.org/download/atlasbinaries/linux/ > It means for me that I cannot work before having all back to > normal (all modules working such as ppgplot, gnuplot-py, Numeric, > numarray, Scipy, matplotlib, etc, etc). And I am not even sure this will > compile with Python 2.4. Anybody knows a way out of this? Compilation of all these (don't know about ppgplot) worked fine for me on SUSE 10.0 (even with 64 Bit, with kind help from the sciy mailing list) and does not take too long. Another option is too choose debian (or ubuntu, ...) as distribution. If you want to have up-to-date matplotlib, you can either compile them yourself or try use use some of the pre-built ones (eg. by John for ubuntu). Also for current scipy you will have to install it yourself. But ATLAS and basically anything else you might need is avaible as .deb. Good luck, Arnd |
|
From: Christian K. <ck...@us...> - 2005-11-23 11:58:21
|
Eric Emsellem wrote: > Hi, > trying to install matplotlib 0.85 on python 2.4 (Suse 10.0), I get : > > ===> cannot find tcl/tk headers. giving up. On SuSE this should be fixed by installing tk-devel and tcl-devel Christian |
|
From: Eric E. <ems...@ob...> - 2005-11-23 11:40:29
|
Hi, trying to install matplotlib 0.85 on python 2.4 (Suse 10.0), I get : ===> cannot find tcl/tk headers. giving up. this is annoying and I cannot find much on the web to help me there. I have checked my libraries and soft (including the "devel") and think I have everything updated right. It is probably a simple pb, so if anybody has a hint there; thanks in advance. Eric P.S.: by the way, upgrading my Linux (Suse 10.0) and therefore getting python 2.4, I have now to reinstall everything from scratch (python modules) and this is a REAL pain (for example ATLAS which takes ages and so on). It means for me that I cannot work before having all back to normal (all modules working such as ppgplot, gnuplot-py, Numeric, numarray, Scipy, matplotlib, etc, etc). And I am not even sure this will compile with Python 2.4. Anybody knows a way out of this? -- =============================================================== Observatoire de Lyon ems...@ob... 9 av. Charles-Andre tel: +33 4 78 86 83 84 69561 Saint-Genis Laval Cedex fax: +33 4 78 86 83 86 France http://www-obs.univ-lyon1.fr/eric.emsellem =============================================================== |
|
From: Gerald J. M. M. <Ger...@jp...> - 2005-11-22 23:04:33
|
Hello, I'm trying to plot some grid data using basemap and imshow however haven't figured out how to specify the color for nan values. For example, in my data, valid values range from 0.0-10.0. I've assigned -9999.0 and 1e30 to the missing values and when I imshow (setting vmin=0.0, vmax=10.0), the missing values show up in the low and high end of the spectrum, respectively. Is there a way to do this? Thanks, Gerald |
|
From: Charlie M. <cw...@gm...> - 2005-11-22 19:32:49
|
Can anybody think of a good way to disable a widget (specifically
SpanSelector) during plot interaction from the toolbar? It seems
wrong when you are panning and the SpanSelector is triggering over and
over. Is there a trivial way to detect the state of the toolbar?
Thanks,
Charlie
|
|
From: Randewijk P-J <pjr...@su...> - 2005-11-22 14:32:02
|
If I say:
my_array =3D -my_other_array
I get the correct result.
However, if I say:
my_array =3D +my_other_array
Weired things happen...
It worked fine using numarray-1.3.3...
Part of my code looks as follows:
...
#Input current as a function of the output current
ia=3D0
ib=3D-iA
ic=3D+iA
iip_cbb=3Dsqrt(2.0/3)*(ia+ib*exp(-2j*pi/3)+ic*exp(+2j*pi/3))
...
The error code I get is:
>>>
Traceback (most recent call last):
File "C:\My Documents\My PhD\Python\helle\helle.py",
line 229, in ?
iip_cbb=3Dsqrt(2.0/3)*(ia+ib*exp(-2j*pi/3)+ic*exp(+2j*pi/3))
TypeError: unsupported operand type(s) for *: 'dict'
and 'complex'
>>>
I then "debuged" the results:
>>> ia
0
>>> ib
array([ -2.30940108e+02, -2.30061311e+02,
-2.27431609e+02,
-2.23071014e+02, -2.17012715e+02,
-2.09302818e+02,
-2.00000000e+02, -1.89175061e+02,
-1.76910386e+02,
...
2.23071014e+02, 2.27431609e+02,
2.30061311e+02,
2.30940108e+02])
It looks fine.
But the supprise was:
>>> ic
{'WE': WE, 'draw_if_interactive': <function
draw_if_interactive at 0x01914EF0>, 'show': <function
show at 0x01914F30>, 'text': <function text at
0x019C16B0>, 'hist': <function hist at 0x019C1130>,
'get_plot_commands': <function get_plot_commands at
0x019BD230>, 'entropy': <function entropy at
0x0178EEF0>, 'rot90': <function rot90 at 0x01763570>,
'rot': <function rot at 0x019C64B0>, 'find': <function
find at 0x01792030>, 'ptp': <function ptp at
0x017636B0>, 'contourf': <function contourf at
0x019BEE70>, 'Int32': Int32, 'inverse': <function
inverse at 0x01763E70>, 'randn': <function randn at
0x017633F0>, 'savefig': <function savefig at
0x019BE530>, 'title': <function title at 0x019BE930>,
'popd': <function popd at 0x017755B0>, 'putmask':
<function putmask at 0x00EB06F0>, 'PolarAxes': <class
matplotlib.axes.PolarAxes at 0x0190E120>, 'swapaxes':
<function swapaxes at 0x00EB1BF0>, 'blackman':
<function blackman at 0x01763A30>, 'center_matrix':
<function center_matrix at 0x017923B0>, 'norm':
<function norm at 0x01792A30>, 'vABr': array([
3.00000000e+02, 2.91878510e+02, 2.81491031e+02,
2.68872055e+02, 2.54073166e+02,
2.37162701e+02,
...
with lots and lots of garbage in between, ending with
...
l', 'ytick.labelsize': 'small', 'ps.papersize': 'a4',
'image.origin': 'upper'}, 'compress': <function
compress at 0x00EB1DB0>, 'UInt8': UInt8, 'amap':
<function amap at 0x01792870>, 'multiply': <UFunc:
'multiply'>, 'amax': <function max at 0x01763630>,
'delaxes': <function delaxes at 0x019BE270>,
'logical_not': <UFunc: 'logical_not'>, 'phib':
-2.0943951023931953, 'asum': <built-in method reduce of
_BinaryUFunc object at 0x01032288>, 'FixedLocator':
<class matplotlib.ticker.FixedLocator at 0x0187FD80>,
'detrend': <function detrend at 0x0178EB70>, 'Float':
Float64, 'base_repr': <function base_repr at
0x01792AF0>, 'hsv': <function hsv at 0x019C18B0>,
'orth': <function orth at 0x01792230>, 'hamming':
<function hamming at 0x01763AF0>, 'axvspan': <function
axvspan at 0x019BEDB0>, 'FuncFormatter': <class
matplotlib.ticker.FuncFormatter at 0x0187FBD0>, 'dot':
<built-in function dot>}
>>>
...
ic=3D(+iA)
...
Gives the same result...
Most of the garbage looks like matplotlib stuff...
I know the solution is to say:
...
ic=3DiA
...
without the "+", but this is a bug somewhere...
Kind regards,
Peter-Jan
|
|
From: Martin K. <mku...@es...> - 2005-11-22 09:32:20
|
OK, matplotlib-0.85 gives the identical error. Installing the newest SWIG was also a failure for whatever reason. It's a pitty that matplotlib does no longer work. Perhaps some of the next releases... Cheers, Martin |
|
From: <oli...@ma...> - 2005-11-22 09:03:39
|
Hi there,
I experienced some strange errors when I distributed our application to=
some colleagues in Denmark.
The application uses:
Python 2.4
wxPython 2.5.5.1
numeric 23.7
matplotlib 0.83.1
The GUI was designed with Boa Constructor 0.4.4. The exe-file was compi=
led
with py2exe 0.6.3
A student who works for me has made an .exe-file of the application tha=
t
worked fine on our PC's in Norway (I tested it on around 10 PC's, both
Windows XP and 2000). Last week we had a meeting with some colleagues f=
rom
Denmark who brought their laptops and installed the application.
Installation went fine for all of them, but the application would not r=
un
on 3 out of 9 laptops (both Windows XP and 2000).
I understand that the error has something to do with matplotlib and wit=
h
Unicode displaying the letter '=E6', but I can't find out what the reas=
on is
for this. Strange thing is, we use the same letter here in Norway. My g=
uess
i that it has someting to do with language settings on these 3 PC's, bu=
t I
am not sure about this.
Anyone an idea what went wrong here? Thanks a lot in advance!
Oliver
Here is the error report and the setup.py for py2exe
Error report:
Traceback (most recent call last):
File "PanelCheck.py", line 4, in ?
File "PanelCheck_GUI.pyc", line 9, in ?
File "Line_Plot.pyc", line 3, in ?
File "Plot_Setup.pyc", line 9, in ?
File "matplotlib\backends\backend_wxagg.pyc", line 18, in ?
File "matplotlib\backends\backend_agg.pyc", line 82, in ?
File "matplotlib\figure.pyc", line 3, in ?
File "matplotlib\axes.pyc", line 14, in ?
File "matplotlib\axis.pyc", line 25, in ?
File "matplotlib\font_manager.pyc", line 993, in ?
File "matplotlib\font_manager.pyc", line 837, in __init__
File "matplotlib\font_manager.pyc", line 830, in rebuild
File "matplotlib\font_manager.pyc", line 456, in createFontDict
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe6' in
position 15: ordinal not in range(128)
Traceback (most recent call last):
File "PanelCheck.py", line 4, in ?
File "PanelCheck_GUI.pyc", line 9, in ?
File "Line_Plot.pyc", line 3, in ?
File "Plot_Setup.pyc", line 9, in ?
File "matplotlib\backends\backend_wxagg.pyc", line 18, in ?
File "matplotlib\backends\backend_agg.pyc", line 82, in ?
File "matplotlib\figure.pyc", line 3, in ?
File "matplotlib\axes.pyc", line 14, in ?
File "matplotlib\axis.pyc", line 25, in ?
File "matplotlib\font_manager.pyc", line 993, in ?
File "matplotlib\font_manager.pyc", line 837, in __init__
File "matplotlib\font_manager.pyc", line 830, in rebuild
File "matplotlib\font_manager.pyc", line 456, in createFontDict
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe6' in
position 15: ordinal not in range(128)
setup.py for py2exe:
# setup.py
from distutils.core import setup
import py2exe
import glob
import sys
class Target:
def __init__(self, **kw):
self.__dict__.update(kw)
# for the versioninfo resources
self.version =3D "1.22"
self.company_name =3D "Matforsk "
self.copyright =3D "no copyright"
self.name =3D "PanelCheck"
manifest_template =3D '''
<?xml version=3D"1.0" encoding=3D"UTF-8" standalone=3D"yes"?>
<assembly xmlns=3D"urn:schemas-microsoft-com:asm.v1" manifestVersion=3D=
"1.0">
<assemblyIdentity
version=3D"5.0.0.0"
processorArchitecture=3D"x86"
name=3D"%(prog)s"
type=3D"win32"
/>
<description>%(prog)s Program</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type=3D"win32"
name=3D"Microsoft.Windows.Common-Controls"
version=3D"6.0.0.0"
processorArchitecture=3D"X86"
publicKeyToken=3D"6595b64144ccf1df"
language=3D"*"
/>
</dependentAssembly>
</dependency>
</assembly>
'''
RT_MANIFEST =3D 24
PanelCheck_files =3D [
"About.py",
"Correlation_Plot.py",
"FileOpen_Summary.py",
"Line_Plot.py",
"LoadData.py",
"PanelCheck.py",
"PanelCheck_GUI.py",
"pca.py",
"Plot_Setup.py",
"fig.ico",
"about.png",
"logo.png",
"help.chm",
"Tucker1_Plot.py",
"Eggshell_Plot.py",
"pmse_Plot.py",
"SplashScreen.py",
"pstat.py",
"stats.py"
]
data =3D glob.glob(r'C:\Program Files\Python24\share\matplotlib\*')
data.append(r'C:\Program Files\Python24\share\matplotlib\matplotlibrc')=
PanelCheck =3D Target(
script =3D "PanelCheck.py",
other_resources =3D [(RT_MANIFEST, 1, manifest_template %
dict(prog=3D"PanelCheck"))],
icon_resources =3D [(1, "fig.ico")],
#data_files =3D [("matplotlibdata", data)],
dest_base =3D "PanelCheck")
setup( data_files =3D [("matplotlibdata", data), ("",["fig.ico", "help=
.chm",
"about.png", "logo.png"]),
("code", PanelCheck_files)],
options =3D {"py2exe": { "packages": ["encodings", "pytz", "numar=
ray",
"matplotlib.numerix.random_array"],
"bundle_files": 3,
"ascii": 1}
},
zipfile =3D None,
name=3D'PanelCheck',
version=3D'1.22',
description=3D'Data Analysis Tool',
author=3D'Henning Risvik and Oliver Tomic',
url=3D'http://www.matforsk.no/PanelCheck',
windows =3D [PanelCheck],
)
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Oliver Tomic,
Dr. Scient, Research Scientist
MATFORSK - Norwegian Food Research Institute
Osloveien 1
1430 =C5s
Norway
Tel.: 0047 6497 0252
Fax: 0047 6497 0333
Mob.: 0047 9574 6167
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
http://www.matforsk.no
http://www.matforsk.no/panelcheck=
|
|
From: Paul B. <peb...@gm...> - 2005-11-22 03:48:35
|
On 11/21/05, Alexander Mont <ale...@co...> wrote: > > Mr. Kienzle, > I just updated my matplotlib from the CVS repository. However when I do > "import pylab", it igves me different errors depending on what directory = I > am in. If I do it in the matplotlib directory I get the error "cannot imp= ort > name rcParams, verbose" while in any other directory I just get the error > "cannot import name verbose". Do you know what the problem is? Also, in t= he > matplotlib directory the error comes from the file numerix/__init__.py, > while in the other directories the error comes from the file cm.py. > Finally, is there an equivalent of "make clean" for distutils? Meaning, > if I want to get rid of all the object files and recreate them to see if > that works, how do I do that? Or is the only way to do that to remove the > whole matplotlib directory and re-download from CVS? > Try deleting the "build" directory and then rebuilding matplotlib. If that doesn't work then delete the matplotlib directory in python/site-packages. Hopefully I'll be able to get this working soon. > By the way, when I do get it working do you want me to submit the patch > for axes.py, or did you already do that? > -Alex Mont > -- Paul Barrett, PhD Johns Hopkins University Assoc. Research Scientist Dept of Physics and Astronomy Phone: 410-516-5190 Baltimore, MD 21218 |
|
From: Alexander M. <ale...@co...> - 2005-11-22 01:53:36
|
Mr. Kienzle,
I just updated my matplotlib from the CVS repository. However when I =
do "import pylab", it igves me different errors depending on what =
directory I am in. If I do it in the matplotlib directory I get the =
error "cannot import name rcParams, verbose" while in any other =
directory I just get the error "cannot import name verbose". Do you know =
what the problem is? Also, in the matplotlib directory the error comes =
from the file numerix/__init__.py, while in the other directories the =
error comes from the file cm.py.
Finally, is there an equivalent of "make clean" for distutils? Meaning, =
if I want to get rid of all the object files and recreate them to see if =
that works, how do I do that? Or is the only way to do that to remove =
the whole matplotlib directory and re-download from CVS?
Hopefully I'll be able to get this working soon.
By the way, when I do get it working do you want me to submit the patch =
for axes.py, or did you already do that?
-Alex Mont |
|
From: Charlie M. <cw...@gm...> - 2005-11-21 21:52:03
|
simple pylab script:
a =3D axes()
a.set_xticklabels(['a', 'b', 'c'])
show()
When I move the mouse around the axes I get this error from the callback:
.......
/usr/local/lib/python2.4/site-packages/matplotlib/ticker.py in
__call__(self, x, pos)
176 'Return the format for tick val x at position pos'
177 if pos>=3Dlen(self.seq): return ''
--> 178 else: return self.seq[pos]
179
180 class FuncFormatter(Formatter):
TypeError: list indices must be integers
"pos" is None
Any ideas?
- Charlie
CVS and at least GTKAgg and TkAgg
|