SourceForge logo
SourceForge logo
Menu

matplotlib-devel — matplotlib developers

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
(1)
Nov
(33)
Dec
(20)
2004 Jan
(7)
Feb
(44)
Mar
(51)
Apr
(43)
May
(43)
Jun
(36)
Jul
(61)
Aug
(44)
Sep
(25)
Oct
(82)
Nov
(97)
Dec
(47)
2005 Jan
(77)
Feb
(143)
Mar
(42)
Apr
(31)
May
(93)
Jun
(93)
Jul
(35)
Aug
(78)
Sep
(56)
Oct
(44)
Nov
(72)
Dec
(75)
2006 Jan
(116)
Feb
(99)
Mar
(181)
Apr
(171)
May
(112)
Jun
(86)
Jul
(91)
Aug
(111)
Sep
(77)
Oct
(72)
Nov
(57)
Dec
(51)
2007 Jan
(64)
Feb
(116)
Mar
(70)
Apr
(74)
May
(53)
Jun
(40)
Jul
(519)
Aug
(151)
Sep
(132)
Oct
(74)
Nov
(282)
Dec
(190)
2008 Jan
(141)
Feb
(67)
Mar
(69)
Apr
(96)
May
(227)
Jun
(404)
Jul
(399)
Aug
(96)
Sep
(120)
Oct
(205)
Nov
(126)
Dec
(261)
2009 Jan
(136)
Feb
(136)
Mar
(119)
Apr
(124)
May
(155)
Jun
(98)
Jul
(136)
Aug
(292)
Sep
(174)
Oct
(126)
Nov
(126)
Dec
(79)
2010 Jan
(109)
Feb
(83)
Mar
(139)
Apr
(91)
May
(79)
Jun
(164)
Jul
(184)
Aug
(146)
Sep
(163)
Oct
(128)
Nov
(70)
Dec
(73)
2011 Jan
(235)
Feb
(165)
Mar
(147)
Apr
(86)
May
(74)
Jun
(118)
Jul
(65)
Aug
(75)
Sep
(162)
Oct
(94)
Nov
(48)
Dec
(44)
2012 Jan
(49)
Feb
(40)
Mar
(88)
Apr
(35)
May
(52)
Jun
(69)
Jul
(90)
Aug
(123)
Sep
(112)
Oct
(120)
Nov
(105)
Dec
(116)
2013 Jan
(76)
Feb
(26)
Mar
(78)
Apr
(43)
May
(61)
Jun
(53)
Jul
(147)
Aug
(85)
Sep
(83)
Oct
(122)
Nov
(18)
Dec
(27)
2014 Jan
(58)
Feb
(25)
Mar
(49)
Apr
(17)
May
(29)
Jun
(39)
Jul
(53)
Aug
(52)
Sep
(35)
Oct
(47)
Nov
(110)
Dec
(27)
2015 Jan
(50)
Feb
(93)
Mar
(96)
Apr
(30)
May
(55)
Jun
(83)
Jul
(44)
Aug
(8)
Sep
(5)
Oct
Nov
(1)
Dec
(1)
2016 Jan
Feb
Mar
(1)
Apr
May
Jun
(2)
Jul
Aug
(3)
Sep
(1)
Oct
(3)
Nov
Dec
2017 Jan
Feb
(5)
Mar
Apr
May
Jun
Jul
(3)
Aug
Sep
(7)
Oct
Nov
Dec
2018 Jan
Feb
Mar
Apr
May
Jun
Jul
(2)
Aug
Sep
Oct
Nov
Dec
S M T W T F S
1
2
3
4
5
(2)
6
(2)
7
8
(3)
9
(2)
10
(13)
11
(11)
12
(8)
13
(4)
14
15
16
(2)
17
(2)
18
19
(1)
20
21
22
(3)
23
24
(2)
25
26
(3)
27
(1)
28
(1)
29
(1)
30
(9)
31
(2)




Showing 4 results of 4

From: John H. <jdh...@ac...> - 2006年10月13日 18:56:18
>>>>> "Travis" == Travis Oliphant <oli...@ie...> writes:
 Travis> How to members on this list feel about a NumPy C-API
 Travis> version number increase for 1.0 final (1.0rc3 first which
 Travis> would become 1.0final a few days later).
We'll tolerate whatever pain is necessary to achieve the one true
numpy final.
JDH
From: Travis O. <oli...@ie...> - 2006年10月13日 18:33:57
Hi folks,
I'm contemplating a useful change to ufuncs to allow them to take 
keyword arguments in the future (I have at least two keyword arguments 
in mind). Unfortunately, this requires a change to the way some 
functions are called which would mean a bump in the C-API version.
This bump is largest issue for users who download latest numpy and then 
have problems with their current Matplotlib. 
How to members on this list feel about a NumPy C-API version number 
increase for 1.0 final (1.0rc3 first which would become 1.0final a few 
days later).
-Travis
From: John H. <jdh...@ac...> - 2006年10月13日 13:47:32
>>>>> "Manuel" == Manuel Metz <mm...@as...> writes:
 Manuel> I've attached a patch... I apologize again ...
No problem - -I just committed this change.
JDH
From: Manuel M. <mm...@as...> - 2006年10月13日 07:16:09
Attachments: axes.patch
Hallo,
sorry to bother you again. I recognized that I introduced an error in my
last patch :-(
 sym = None
 starlike = False
 # to be API compatible
 if sym is None and not (verts is None):
 	 ^^^^^^^^^^^
This, of cause, makes no sense. The correct line reads:
 if marker is None and not (verts is None):
 ^^^^^^^^^^^^^^
I've attached a patch... I apologize again ...
Manuel
Manuel Metz wrote:
> John Hunter wrote:
>>>>>>>>>>>>> "Manuel" == Manuel Metz <mm...@as...> writes:
>>> Manuel> There is a subtle but essential difference ;-) : for i in
>>> Manuel> xrange(1,len(r), 2 ) ^^^ , i.e. every second value gets
>>> Manuel> rescaled. But there is probably a more "pythonic" way to
>>> Manuel> do that:
>>>
>>> Manuel> 	r = 1.0/math.sqrt(math.pi) # unit area r = asarray(
>>> Manuel> [r,0.5*r]*self.numsides )
>>>
>>> Manuel> I'm not aware of a better way to do this with numerix :-(
>>>
>>> Oops, sorry I missed that. I think what you want is then
>>>
>>> scale = 0.5/math.sqrt(math.pi)
>>> r = scale*ones(self.numsides*2)
>>> r[1::2] *= 0.5
>>>
> 
> I've fixed that - and I've learned something !
> 
>>> OK, if I could make a few more suggestions (I feel like a customer at
>>> a restaurant where every time the waiter brings me a cup of coffee I
>>> ask "just one more thing"...)
>>>
>>> + old_ymin,old_ymax = self.get_ylim()
>>>
>>> The matplotlib style guidelines are
>>>
>>> UpperCase : classes
>>> lower_underscore : functions and methods
>>> lower or lowerUpper : variables or attributes
>>>
>>> For shortish variable names, I prefer
>>>
>>> oldymin, oldymax = self.get_ylim()
> 
> Ah - there are three lines that I touched for only one reason: the line
> indention was done with a "tab" instead of "spaces". When I recognised
> this in my text editor, I changed it to space-indention. That's the only
> reason for these patched lines.
> 
>>> + if isinstance(marker, str) or isinstance(marker, unicode):
>>> + # the standard way to define symbols using a string
> character
>>> + sym = syms.get(marker)
>>>
>>> + if isinstance(marker, tuple) or isinstance(marker, list):
>>> + # accept marker to be:
>>> + # (numsides, style, [angle])
>>>
>>> + if isinstance(marker[0], int) or isinstance(marker[0],
> long):
>>> + # (numsides, style, [angle])
>>>
>>> Here you should use "duck typing" not "type checking" (google "duck
>>> typing"). matplotlib.cbook provides several duck typing functions, eg
>>> is_stringlike, iterable and is_numlike. Take a look at is_numlike
>>>
>>> def is_numlike(obj):
>>> try: obj+1
>>> except TypeError: return False
>>> else: return True
>>>
>>> Ie, if it acts like a number (you can add one to it) then we'll treat
>>> it as a number. This allows users to provide other integer like
>>> classes which are not ints or longs. Everytime you use isinstance,
>>> take a 2nd look. There may be a better way.
>>>
>>> I'll await your updated patch :-)
> 
> I've fixed that too - and learned even more ;-) Thanks !
> 
> Patch against latest revision is attached.
> 
> Manuel
> 
> 
> 
> ------------------------------------------------------------------------
> 
> Index: axes.py
> ===================================================================
> --- axes.py	(revision 2811)
> +++ axes.py	(working copy)
> @@ -14,8 +14,9 @@
> 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, QuadMesh
> + allequal, dict_delall, popd, popall, silent_list, is_numlike
> +from collections import RegularPolyCollection, PolyCollection, LineCollection, QuadMesh, \
> + StarPolygonCollection
> from colors import colorConverter, normalize, Colormap, \
> LinearSegmentedColormap, looks_like_color, is_color_like
> import cm
> @@ -1211,7 +1212,7 @@
> if xmax is None and hasattr(xmin,'__len__'):
> xmin,xmax = xmin
> 
> -	old_xmin,old_xmax = self.get_xlim()
> + old_xmin,old_xmax = self.get_xlim()
> if xmin is None: xmin = old_xmin
> if xmax is None: xmax = old_xmax
> 
> @@ -1223,7 +1224,7 @@
> xmin -= 1e-38
> xmax += 1e-38
> 
> -	self.viewLim.intervalx().set_bounds(xmin, xmax)
> + self.viewLim.intervalx().set_bounds(xmin, xmax)
> if emit: self._send_xlim_event()
> return xmin, xmax
> 
> @@ -1324,7 +1325,7 @@
> if ymax is None and hasattr(ymin,'__len__'):
> ymin,ymax = ymin
> 
> -	old_ymin,old_ymax = self.get_ylim()
> + old_ymin,old_ymax = self.get_ylim()
> if ymin is None: ymin = old_ymin
> if ymax is None: ymax = old_ymax
> 
> @@ -3100,10 +3101,9 @@
> 'h' : hexagon
> '8' : octagon
> 
> + If marker is None and verts is not None, verts is a sequence
> + of (x,y) vertices for a custom scatter symbol.
> 
> - if marker is None and verts is not None, verts is a sequence
> - of (x,y) vertices for a custom scatter symbol. The
> -
> s is a size argument in points squared.
> 
> Any or all of x, y, s, and c may be masked arrays, in which
> @@ -3171,26 +3171,74 @@
> if faceted: edgecolors = None
> else: edgecolors = 'None'
> 
> - sym = syms.get(marker)
> - if sym is None and verts is None:
> - raise ValueError('Unknown marker symbol to scatter')
> -
> + sym = None
> + starlike = False
> + 
> + # to be API compatible
> + if sym is None and not (verts is None):
> + marker = (verts, 0)
> + verts = None
> + 
> + if is_string_like(marker):
> + # the standard way to define symbols using a string character
> + sym = syms.get(marker)
> + if sym is None and verts is None:
> + raise ValueError('Unknown marker symbol to scatter')
> + numsides, rotation = syms[marker]
> + 
> + elif iterable(marker):
> + # accept marker to be:
> + # (numsides, style, [angle])
> + # or
> + # (verts[], style, [angle])
> + 
> + if len(marker)<2 or len(marker)>3:
> + raise ValueError('Cannot create markersymbol from marker')
> + 
> + if is_numlike(marker[0]):
> + # (numsides, style, [angle])
> + 
> + if len(marker)==2:
> + numsides, rotation = marker[0], math.pi/4.
> + elif len(marker)==3:
> + numsides, rotation = marker[0], marker[2]
> + sym = True
> + 
> + if marker[1]==1:
> + # starlike symbol, everthing else is interpreted as solid symbol
> + starlike = True
> + 
> + else:
> + verts = asarray(marker[0])
> + 
> if sym is not None:
> - numsides, rotation = syms[marker]
> - collection = RegularPolyCollection(
> - self.figure.dpi,
> - numsides, rotation, scales,
> - facecolors = colors,
> - edgecolors = edgecolors,
> - linewidths = linewidths,
> - offsets = zip(x,y),
> - transOffset = self.transData,
> - )
> + if not starlike:
> + collection = RegularPolyCollection(
> + self.figure.dpi,
> + numsides, rotation, scales,
> + facecolors = colors,
> + edgecolors = edgecolors,
> + linewidths = linewidths,
> + offsets = zip(x,y),
> + transOffset = self.transData,
> + )
> + else:
> + collection = StarPolygonCollection(
> + self.figure.dpi,
> + numsides, rotation, scales,
> + facecolors = colors,
> + edgecolors = edgecolors,
> + linewidths = linewidths,
> + offsets = zip(x,y),
> + transOffset = self.transData,
> + )
> else:
> - verts = asarray(verts)
> - # hmm, the scaling is whacked -- how do we want to scale with custom verts?
> + # rescale verts
> + rescale = sqrt(max(verts[:,0]**2+verts[:,1]**2))
> + verts /= rescale
> + 
> scales = asarray(scales)
> - #scales = sqrt(scales * self.figure.dpi.get() / 72.)
> + scales = sqrt(scales * self.figure.dpi.get() / 72.)
> if len(scales)==1:
> verts = [scales[0]*verts]
> else:
> Index: collections.py
> ===================================================================
> --- collections.py	(revision 2811)
> +++ collections.py	(working copy)
> @@ -15,7 +15,7 @@
> from cbook import is_string_like, iterable
> from colors import colorConverter
> from cm import ScalarMappable
> -from numerix import arange, sin, cos, pi, asarray, sqrt, array, newaxis
> +from numerix import arange, sin, cos, pi, asarray, sqrt, array, newaxis, ones
> from transforms import identity_transform
> 
> class Collection(Artist):
> @@ -293,7 +293,7 @@
> * dpi is the figure dpi instance, and is required to do the
> area scaling.
> 
> - * numsides: the number of sides of the polygon
> + * numsides: the number of sides of the polygon
> 
> * sizes gives the area of the circle circumscribing the
> regular polygon in points^2
> @@ -374,6 +374,43 @@
> raise NotImplementedError('Vertices in data coordinates are calculated\n'
> + 'only with offsets and only if _transOffset == dataTrans.')
> 
> +class StarPolygonCollection(RegularPolyCollection):
> + def __init__(self,
> + dpi,
> + numsides,
> + rotation = 0 ,
> + sizes = (1,),
> + **kwargs):
> + """
> + Draw a regular star like Polygone with numsides.
> + 
> + * dpi is the figure dpi instance, and is required to do the
> + area scaling.
> +
> + * numsides: the number of sides of the polygon
> +
> + * sizes gives the area of the circle circumscribing the
> + regular polygon in points^2
> +
> + * rotation is the rotation of the polygon in radians
> +
> + kwargs: See PatchCollection for more details
> +
> + * offsets are a sequence of x,y tuples that give the centers of
> + the polygon in data coordinates
> +
> + * transOffset is the Transformation instance used to
> + transform the centers onto the canvas.
> + """
> + RegularPolyCollection.__init__(self, dpi, numsides, rotation, sizes, **kwargs)
> + 
> + def _update_verts(self):
> + scale = 1.0/math.sqrt(math.pi)
> + r = scale*ones(self.numsides*2)
> + r[1::2] *= 0.5
> + theta = (2.*math.pi/(2*self.numsides))*arange(2*self.numsides) + self.rotation
> + self._verts = zip( r*sin(theta), r*cos(theta) )
> +
> class LineCollection(Collection, ScalarMappable):
> """
> All parameters must be sequences. The property of the ith line
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Matplotlib-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
-- 
---------------------------------------
 Manuel Metz ............ Stw@AIfA
 Argelander Institut fuer Astronomie
 Auf dem Huegel 71 (room 3.06)
 D - 53121 Bonn
 E-Mail: mm...@as...
 Web: www.astro.uni-bonn.de/~mmetz
 Phone: (+49) 228 / 73-3660
 Fax: (+49) 228 / 73-3672
---------------------------------------

Showing 4 results of 4

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /