3131"d" thin_diamond
3232"|" vline
3333"_" hline
34+ "P" plus (filled)
35+ "X" x (filled)
3436TICKLEFT tickleft
3537TICKRIGHT tickright
3638TICKUP tickup
@@ -124,6 +126,8 @@ class MarkerStyle(object):
124126 'd' : 'thin_diamond' ,
125127 '|' : 'vline' ,
126128 '_' : 'hline' ,
129+ 'P' : 'plus_filled' ,
130+ 'X' : 'x_filled' ,
127131 TICKLEFT : 'tickleft' ,
128132 TICKRIGHT : 'tickright' ,
129133 TICKUP : 'tickup' ,
@@ -145,7 +149,8 @@ class MarkerStyle(object):
145149 # Just used for informational purposes. is_filled()
146150 # is calculated in the _set_* functions.
147151 filled_markers = (
148- 'o' , 'v' , '^' , '<' , '>' , '8' , 's' , 'p' , '*' , 'h' , 'H' , 'D' , 'd' )
152+ 'o' , 'v' , '^' , '<' , '>' , '8' , 's' , 'p' , '*' , 'h' , 'H' , 'D' , 'd' ,
153+ 'P' , 'X' )
149154
150155 fillstyles = ('full' , 'left' , 'right' , 'bottom' , 'top' , 'none' )
151156 _half_fillstyles = ('left' , 'right' , 'bottom' , 'top' )
@@ -827,3 +832,87 @@ def _set_x(self):
827832 self ._snap_threshold = 3.0
828833 self ._filled = False
829834 self ._path = self ._x_path
835+
836+ _plus_filled_path = Path ([(1 / 3 , 0 ), (2 / 3 , 0 ), (2 / 3 , 1 / 3 ),
837+ (1 , 1 / 3 ), (1 , 2 / 3 ), (2 / 3 , 2 / 3 ),
838+ (2 / 3 , 1 ), (1 / 3 , 1 ), (1 / 3 , 2 / 3 ),
839+ (0 , 2 / 3 ), (0 , 1 / 3 ), (1 / 3 , 1 / 3 ),
840+ (1 / 3 , 0 )],
841+ [Path .MOVETO , Path .LINETO , Path .LINETO ,
842+ Path .LINETO , Path .LINETO , Path .LINETO ,
843+ Path .LINETO , Path .LINETO , Path .LINETO ,
844+ Path .LINETO , Path .LINETO , Path .LINETO ,
845+ Path .CLOSEPOLY ])
846+
847+ _plus_filled_path_t = Path ([(1 , 1 / 2 ), (1 , 2 / 3 ), (2 / 3 , 2 / 3 ),
848+ (2 / 3 , 1 ), (1 / 3 , 1 ), (1 / 3 , 2 / 3 ),
849+ (0 , 2 / 3 ), (0 , 1 / 2 ), (1 , 1 / 2 )],
850+ [Path .MOVETO , Path .LINETO , Path .LINETO ,
851+ Path .LINETO , Path .LINETO , Path .LINETO ,
852+ Path .LINETO , Path .LINETO ,
853+ Path .CLOSEPOLY ])
854+
855+ def _set_plus_filled (self ):
856+ self ._transform = Affine2D ().translate (- 0.5 , - 0.5 )
857+ self ._snap_threshold = 5.0
858+ self ._joinstyle = 'miter'
859+ fs = self .get_fillstyle ()
860+ if not self ._half_fill ():
861+ self ._path = self ._plus_filled_path
862+ else :
863+ # Rotate top half path to support all partitions
864+ if fs == 'top' :
865+ rotate , rotate_alt = 0 , 180
866+ elif fs == 'bottom' :
867+ rotate , rotate_alt = 180 , 0
868+ elif fs == 'left' :
869+ rotate , rotate_alt = 90 , 270
870+ else :
871+ rotate , rotate_alt = 270 , 90
872+
873+ self ._path = self ._plus_filled_path_t
874+ self ._alt_path = self ._plus_filled_path_t
875+ self ._alt_transform = Affine2D ().translate (- 0.5 , - 0.5 )
876+ self ._transform .rotate_deg (rotate )
877+ self ._alt_transform .rotate_deg (rotate_alt )
878+
879+ _x_filled_path = Path ([(0.25 , 0 ), (0.5 , 0.25 ), (0.75 , 0 ), (1 , 0.25 ),
880+ (0.75 , 0.5 ), (1 , 0.75 ), (0.75 , 1 ), (0.5 , 0.75 ),
881+ (0.25 , 1 ), (0 , 0.75 ), (0.25 , 0.5 ), (0 , 0.25 ),
882+ (0.25 , 0 )],
883+ [Path .MOVETO , Path .LINETO , Path .LINETO ,
884+ Path .LINETO , Path .LINETO , Path .LINETO ,
885+ Path .LINETO , Path .LINETO , Path .LINETO ,
886+ Path .LINETO , Path .LINETO , Path .LINETO ,
887+ Path .CLOSEPOLY ])
888+
889+ _x_filled_path_t = Path ([(0.75 , 0.5 ), (1 , 0.75 ), (0.75 , 1 ),
890+ (0.5 , 0.75 ), (0.25 , 1 ), (0 , 0.75 ),
891+ (0.25 , 0.5 ), (0.75 , 0.5 )],
892+ [Path .MOVETO , Path .LINETO , Path .LINETO ,
893+ Path .LINETO , Path .LINETO , Path .LINETO ,
894+ Path .LINETO , Path .CLOSEPOLY ])
895+
896+ def _set_x_filled (self ):
897+ self ._transform = Affine2D ().translate (- 0.5 , - 0.5 )
898+ self ._snap_threshold = 5.0
899+ self ._joinstyle = 'miter'
900+ fs = self .get_fillstyle ()
901+ if not self ._half_fill ():
902+ self ._path = self ._x_filled_path
903+ else :
904+ # Rotate top half path to support all partitions
905+ if fs == 'top' :
906+ rotate , rotate_alt = 0 , 180
907+ elif fs == 'bottom' :
908+ rotate , rotate_alt = 180 , 0
909+ elif fs == 'left' :
910+ rotate , rotate_alt = 90 , 270
911+ else :
912+ rotate , rotate_alt = 270 , 90
913+
914+ self ._path = self ._x_filled_path_t
915+ self ._alt_path = self ._x_filled_path_t
916+ self ._alt_transform = Affine2D ().translate (- 0.5 , - 0.5 )
917+ self ._transform .rotate_deg (rotate )
918+ self ._alt_transform .rotate_deg (rotate_alt )
0 commit comments