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
(10) |
2
(3) |
|
3
(5) |
4
(7) |
5
(18) |
6
(4) |
7
(15) |
8
(7) |
9
(10) |
|
10
(4) |
11
(18) |
12
(15) |
13
(11) |
14
(11) |
15
(4) |
16
(28) |
|
17
(17) |
18
(22) |
19
(12) |
20
(19) |
21
(17) |
22
(14) |
23
(4) |
|
24
(3) |
25
(6) |
26
(8) |
27
(13) |
28
(11) |
29
(21) |
30
(3) |
|
31
(5) |
|
|
|
|
|
|
|
From: Eric F. <ef...@ha...> - 2006-12-06 19:48:43
|
Rob, This is now in svn, for pcolor only, not for pcolormesh. Please check it out. If everything is OK I can add it to pcolormesh as well (although pcolormesh still has a deeply-buried bug such that it does not work with alpha != 1). Eric Robert Hetland wrote: > > I would like to propose expanding the inputs of pcolor to take vectors. > Often, you have x and y independent (seperable), and you don't want to > go on constructing an x array of redundant values. Actually, in NumPy > it is not straightforward to do this with resize if your variable is in > the first dimension like time (well, there is meshgrid, but you would > only use it for plotting, and with two vectors -- see below). Since > NumPy makes such heavy use of array broadcasting, it is not necessary. > > I think MPL should follow the spirit of array broadcasting, and make it > such that: > > x = arange(10) > y = arange(30) > z = rand(30,10) > pcolor (x, y, z) > > will work as expected. Perhaps, we could require a NewAxis in the right > places, but it would also make sense without. You should also be able to > send in just one vector. Consider > > x,y = meshgrid(arange(10), arange(30)) > y = y + random.normal(size=y.shape) > z = random.random(y.shape) > pcolor (x, y, z) > % but x is still essentially just arange(10) > pcolor(arange(10), y, z) > > What do you all think? > > -Rob. > > > ----- > Rob Hetland, Assistant Professor > Dept of Oceanography, Texas A&M University > p: 979-458-0096, f: 979-845-6331 > e: he...@ta..., w: http://pong.tamu.edu > |
|
From: Tom D. <tom...@al...> - 2006-12-06 17:11:26
|
Sorry meant to send this to the whole list:
----------------------------
John,
Thanks for the fix. After reading Eric's email I started to question
my profiling results but I still (without your fix) seem to see a
significant time when in Artist when generating large volumes of
graphs. I need to rebuild my matplotlib against svn and test your fix
now to see if that solves the problem.
Thanks for your help.
--Tom
On 12/5/06, John Hunter <jdh...@ac...> wrote:
> >>>>> "Christopher" == Christopher Barker <Chr...@no...> writes:
>
> Christopher> This sounds like a job for properties! make
> Christopher> _transform a property, and code that gets and sets it
> Christopher> directly should still work. though People that were
> Christopher> accessing an underscored name directly should expect
> Christopher> this kind of problem.
>
> The matplotlib artist kwarg properties act like python properties or
> enthought traits, with some advantages and disadvantages over each
> (mostly disadvantages, alas). We've discussed migrating to one or
> another over the years, but haven't bitten the bullet. At each point
> it's easier to extend the exiting implementation than refactor the
> whole bit; the tyranny of small decisions.
>
> Here are some of the pros and cons as I see them of enthought traits
> vs python properties
>
> Pros:
> * compatibility with the rest of the enthought tool suite
> * built in observer pattern
> * automatic UI for wx users
> * performance is better than python properties last time I looked
> * matplotlib ships with enthought traits built in
>
> Cons:
> * smaller user base than python properties may imply
> fewer 3rd party enhancements, less support, etc
> * we have to maintain our copy of enthought traits to keep it
> current and building or require an additional dependency
>
> I spent some time working on matplotlib rc properties as enthought
> traits as a precursor to porting matplotlib properties to traits.
> Here is some example code showing how to define some representative rc
> properties and construct a matplotlib artist using traits. Because
> matplotlib ships with enthought traits already, you can run this
> script with just matplotlib. Unfortunately, we do not ship the ex UI
> component so you can't test that part. I'm a bit of a traits newbie
> so there are probably better ways to do what I have done below.
>
> import sys, os, re
> import matplotlib.enthought.traits as traits
> from matplotlib.cbook import is_string_like
> from matplotlib.artist import Artist
>
> doprint = True
> flexible_true_trait = traits.Trait(
> True,
> { 'true': True, 't': True, 'yes': True, 'y': True, 'on': True, True: True,
> 'false': False, 'f': False, 'no': False, 'n': False, 'off': False, False: False
> } )
> flexible_false_trait = traits.Trait( False, flexible_true_trait )
>
> colors = {
> 'c' : '#00bfbf',
> 'b' : '#0000ff',
> 'g' : '#008000',
> 'k' : '#000000',
> 'm' : '#bf00bf',
> 'r' : '#ff0000',
> 'w' : '#ffffff',
> 'y' : '#bfbf00',
> 'gold' : '#FFD700',
> 'peachpuff' : '#FFDAB9',
> 'navajowhite' : '#FFDEAD',
> }
>
> def hex2color(s):
> "Convert hex string (like html uses, eg, #efefef) to a r,g,b tuple"
> return tuple([int(n, 16)/255.0 for n in (s[1:3], s[3:5], s[5:7])])
>
> class RGBA(traits.HasTraits):
> # r,g,b,a in the range 0-1 with default color 0,0,0,1 (black)
> r = traits.Range(0., 1., 0.)
> g = traits.Range(0., 1., 0.)
> b = traits.Range(0., 1., 0.)
> a = traits.Range(0., 1., 1.)
> def __init__(self, r=0., g=0., b=0., a=1.):
> self.r = r
> self.g = g
> self.b = b
> self.a = a
> def __repr__(self):
> return 'r,g,b,a = (%1.2f, %1.2f, %1.2f, %1.2f)'%\
> (self.r, self.g, self.b, self.a)
>
> def tuple_to_rgba(ob, name, val):
> tup = [float(x) for x in val]
> if len(tup)==3:
> r,g,b = tup
> return RGBA(r,g,b)
> elif len(tup)==4:
> r,g,b,a = tup
> return RGBA(r,g,b,a)
> else:
> raise ValueError
> tuple_to_rgba.info = 'a RGB or RGBA tuple of floats'
>
> def hex_to_rgba(ob, name, val):
> rgx = re.compile('^#[0-9A-Fa-f]{6}$')
>
> if not is_string_like(val):
> raise TypeError
> if rgx.match(val) is None:
> raise ValueError
> r,g,b = hex2color(val)
> return RGBA(r,g,b,1.0)
> hex_to_rgba.info = 'a hex color string'
>
> def colorname_to_rgba(ob, name, val):
> hex = colors[val.lower()]
> r,g,b = hex2color(hex)
> return RGBA(r,g,b,1.0)
> colorname_to_rgba.info = 'a named color'
>
> def float_to_rgba(ob, name, val):
> val = float(val)
> return RGBA(val, val, val, 1.)
> float_to_rgba.info = 'a grayscale intensity'
>
>
>
> Color = traits.Trait(RGBA(), float_to_rgba, colorname_to_rgba, RGBA,
> hex_to_rgba, tuple_to_rgba)
>
> def file_exists(ob, name, val):
> fh = file(val, 'r')
> return val
>
> def path_exists(ob, name, val):
> os.path.exists(val)
> linestyles = ('-', '--', '-.', ':', 'steps', 'None')
> TICKLEFT, TICKRIGHT, TICKUP, TICKDOWN = range(4)
> linemarkers = (None, '.', ',', 'o', '^', 'v', '<', '>', 's',
> '+', 'x', 'd', 'D', '|', '_', 'h', 'H',
> 'p', '1', '2', '3', '4',
> TICKLEFT,
> TICKRIGHT,
> TICKUP,
> TICKDOWN,
> 'None'
> )
>
> class LineRC(traits.HasTraits):
> linewidth = traits.Float(0.5)
> linestyle = traits.Trait(*linestyles)
> color = Color
> marker = traits.Trait(*linemarkers)
> markerfacecolor = Color
> markeredgecolor = Color
> markeredgewidth = traits.Float(0.5)
> markersize = traits.Float(6)
> antialiased = flexible_true_trait
> data_clipping = flexible_false_trait
>
> class PatchRC(traits.HasTraits):
> linewidth = traits.Float(1.0)
> facecolor = Color
> edgecolor = Color
> antialiased = flexible_true_trait
>
> timezones = 'UTC', 'US/Central', 'ES/Eastern' # fixme: and many more
> backends = ('GTKAgg', 'Cairo', 'FltkAgg', 'GD', 'GDK', 'GTK', 'Agg',
> 'GTKCairo', 'Paint', 'PS', 'SVG', 'Template', 'TkAgg',
> 'WX')
>
> class RC(traits.HasTraits):
> backend = traits.Trait(*backends)
> numerix = traits.Trait('Numeric', 'numarray')
> interactive = flexible_false_trait
> toolbar = traits.Trait('toolbar2', 'classic', None)
> timezone = traits.Trait(*timezones)
> lines = traits.Trait(LineRC())
> patch = traits.Trait(PatchRC())
>
> rc = RC()
> rc.lines.color = 'r'
> if doprint:
> print 'RC'
> rc.print_traits()
> print 'RC lines'
> rc.lines.print_traits()
> print 'RC patches'
> rc.patch.print_traits()
>
>
> class Patch(Artist, traits.HasTraits):
> linewidth = traits.Float(0.5)
> facecolor = Color
> fc = facecolor
> edgecolor = Color
> fill = flexible_true_trait
> def __init__(self,
> edgecolor=None,
> facecolor=None,
> linewidth=None,
> antialiased = None,
> fill=1,
> **kwargs
> ):
> Artist.__init__(self)
>
> if edgecolor is None: edgecolor = rc.patch.edgecolor
> if facecolor is None: facecolor = rc.patch.facecolor
> if linewidth is None: linewidth = rc.patch.linewidth
> if antialiased is None: antialiased = rc.patch.antialiased
>
> self.edgecolor = edgecolor
> self.facecolor = facecolor
> self.linewidth = linewidth
> self.antialiased = antialiased
> self.fill = fill
>
>
> p = Patch()
> p.facecolor = '#bfbf00'
> p.edgecolor = 'gold'
> p.facecolor = (1,.5,.5,.25)
> p.facecolor = 0.25
> p.fill = 'f'
> print 'p.facecolor', type(p.facecolor), p.facecolor
> print 'p.fill', type(p.fill), p.fill
> if p.fill_: print 'fill'
> else: print 'no fill'
> if doprint:
> print
> print 'Patch'
> p.print_traits()
>
>
>
> JDH
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
|
|
From: John H. <jdh...@ac...> - 2006-12-06 16:10:08
|
>>>>> "Pellegrini" == Pellegrini Eric <eri...@ya...> writes:
Pellegrini> Hi everybody, I would like to build an application
Pellegrini> where many filled polygons will have to be displayed
Pellegrini> on the screen. To do so, I would like to use
Pellegrini> matplotlib but, up to now, my application is not fast
Pellegrini> enough.
Hmm, I'm not seeing the performance problem on my system -- I can
create and save the figure in a fraction of a second. Is your numerix
setting set to numpy? Run the script with --verbose-helpful and send
us the output.
A few things to note: if you really want regular polygons, eg the
squared in your example, do any of the plot markers work for you.
plot(x, marker='s')
will be about as fast as mpl gets. You can set the marker size with
the markersize property.
Second, if you need arbitrary polygons, and need a lot of them, a
polygon collection will be faster. I had to bump the number of polys
up to about 8000 to show a dramatic performance difference.
Here are two scripts and performance numbers -- one using fill and one
using a polygon collection
> time python test.py -dAgg
6.595u 0.089s 0:06.68 99.8% 0+0k 0+0io 0pf+0w
> time python test2.py -dAgg
0.565u 0.033s 0:00.59 100.0% 0+0k 0+0io 0pf+0w
> cat test.py
import pylab
x = range(0,81000,10)
pylab.axis('off')
for i in range(0,len(x)-1):
pylab.fill([x[i],x[i+1],x[i+1],x[i]],[10,10,20,20])
pylab.axis((0,max(x),0,610))
pylab.savefig('test')
pylab.show()
> cat test2.py
import pylab
from matplotlib.collections import PolyCollection
fig = pylab.figure()
ax = fig.add_subplot(111)
x = range(0,81000,10)
pylab.axis('off')
verts = [((x[i], 10), (x[i+1], 10), (x[i+1], 20), (x[i], 20)) for i in range(len(x)-1)]
col = PolyCollection(verts)
ax.add_collection(col)
pylab.axis((0,max(x),0,610))
pylab.savefig('test')
pylab.show()
|
|
From: Pellegrini E. <eri...@ya...> - 2006-12-06 08:32:22
|
Hi everybody,
I would like to build an application where many filled polygons will have to be displayed on the screen. To do so, I would like to use matplotlib but, up to now, my application is not fast enough.
I use:
python 2.4.1
matplot-0.87.6
numpy-1.0rc1
and I checked my matplotlibrc file, the interactive flag is False.
Here is a little script that illustrates my problem. It takes something like 5-10s to display 80 polygons on the screen using a brand new machine.
###########################################
import pylab
x = range(0,810,10)
pylab.axis('off')
for i in range(0,len(x)-1):
pylab.fill([x[i],x[i+1],x[i+1],x[i]],[10,10,20,20])
pylab.axis((0,810,0,610))
########################################
would you have any idea of what is going on or of a better way to implement this ?
Thank you very much
Eric
---------------------------------
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses. |