Index: axes.py
===================================================================
--- axes.py	(revision 2829)
+++ axes.py	(working copy)
@@ -16,7 +16,7 @@
 from cbook import iterable, is_string_like, flatten, enumerate, \
      allequal, dict_delall, popd, popall, silent_list, is_numlike
 from collections import RegularPolyCollection, PolyCollection, LineCollection, QuadMesh, \
-     StarPolygonCollection
+     StarPolygonCollection, AsteriskLineCollection
 from colors import colorConverter, normalize, Colormap, \
         LinearSegmentedColormap, looks_like_color, is_color_like
 import cm
@@ -3172,7 +3172,7 @@
         else: edgecolors = 'None'
 
         sym = None
-        starlike = False
+        symstyle = 0
         
         # to be API compatible
         if marker is None and not (verts is None):
@@ -3196,23 +3196,22 @@
                 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.
+                    numsides, rotation = marker[0], 0.
                 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
-            
+                if marker[1] in (1,2):
+                    symstyle = marker[1]
             else:
                 verts = asarray(marker[0])
                 
+                if marker[1]==2:
+                    symstyle=2
+        
         if sym is not None:
-            if not starlike:
+            if symstyle==0:
                 collection = RegularPolyCollection(
                     self.figure.dpi,
                     numsides, rotation, scales,
@@ -3222,7 +3221,7 @@
                     offsets = zip(x,y),
                     transOffset = self.transData,
                     )
-            else:
+            elif symstyle==1:
                 collection = StarPolygonCollection(
                     self.figure.dpi,
                     numsides, rotation, scales,
@@ -3232,10 +3231,19 @@
                     offsets = zip(x,y),
                     transOffset = self.transData,
                     )
+            elif symstyle==2:
+                collection = AsteriskLineCollection(
+                    self.figure.dpi,
+                    numsides, rotation, scales,
+                    colors = colors,
+                    offsets = zip(x,y),
+                    transOffset = self.transData,
+                    )
+                
         else:
             # rescale verts
             rescale = sqrt(max(verts[:,0]**2+verts[:,1]**2))
-            verts /= rescale
+            verts /= (2.*rescale)
             
             scales = asarray(scales)
             scales = sqrt(scales * self.figure.dpi.get() / 72.)
@@ -3244,14 +3252,23 @@
             else:
                 # todo -- make this nx friendly
                 verts = [verts*s for s in scales]
-            collection = PolyCollection(
-                verts,
-                facecolors = colors,
-                edgecolors = edgecolors,
-                linewidths = linewidths,
-                offsets = zip(x,y),
-                transOffset = self.transData,
-                )
+            
+            if symstyle==0:
+                collection = PolyCollection(
+                    verts,
+                    facecolors = colors,
+                    edgecolors = edgecolors,
+                    linewidths = linewidths,
+                    offsets = zip(x,y),
+                    transOffset = self.transData,
+                    )
+            elif symstyle==2:
+                collection = LineCollection(
+                    verts,
+                    colors = colors,
+                    offsets = zip(x,y),
+                    transOffset = self.transData,
+                    )
             collection.set_transform(identity_transform())
         collection.set_alpha(alpha)
         collection.update(kwargs)
Index: collections.py
===================================================================
--- collections.py	(revision 2829)
+++ 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, ones
+from numerix import arange, sin, cos, pi, asarray, sqrt, array, newaxis, ones, zeros, Float32
 from transforms import identity_transform
 
 class Collection(Artist):
@@ -464,7 +464,7 @@
         matrix _A is not None (ie a call to set_array has been made), at
         draw time a call to scalar mappable will be made to set the colors.
         """
-
+        
         Collection.__init__(self)
         ScalarMappable.__init__(self, norm, cmap)
 
@@ -633,4 +633,69 @@
         self._colors = self.to_rgba(self._A, self._alpha)
 
 
-
+class AsteriskLineCollection(LineCollection):
+    
+    def __init__(self, dpi,
+                 numsides, rotation = 0, scales = (1,),
+                 linewidths    = None,
+                 colors        = None,
+                 antialiaseds  = None,
+                 linestyle = 'solid',
+                 offsets = None,
+                 transOffset = None,
+                 norm = None,
+                 cmap = None,
+                ):
+        
+        """Draw a regular asterisk with numsides armes.
+        
+        * dpi is the figure dpi instance, and is required to do the
+          area scaling.
+        
+        * numsides: the number of sides of the polygon
+        
+        * scales gives the area of the circle circumscribing the
+          regular polygon in points^2
+        
+        * rotation is the rotation of the polygon in radians
+        
+          * 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.
+        """
+        
+        LineCollection.__init__(self,
+                                None,
+                                linewidths,
+                                colors,
+                                antialiaseds,
+                                linestyle,
+                                offsets,
+                                transOffset,
+                                norm,
+                                cmap,
+                               )
+                               
+        self.numsides = numsides
+        self.rotation = rotation
+        self._dpi = dpi
+        self._scales = scales
+        
+        segments = self._update_segments()
+        LineCollection.set_segments(self, segments)
+        
+        self.set_transform(identity_transform())
+        
+    def _update_segments(self):
+        scales = sqrt(asarray(self._scales)*self._dpi.get()/72.0/math.pi)
+        theta = (2.*math.pi/self.numsides)*arange(self.numsides) + self.rotation
+        x = zeros(self.numsides*2+1, Float32)
+        y = zeros(self.numsides*2+1, Float32)
+        x[1::2] = scales*sin(theta)
+        y[1::2] = scales*cos(theta)
+        return [asarray(zip(x,y))]
+        
+    def set_segments(self, segments):
+        pass
