Search the internet for Proxy Artists in the legend.
-Sterling

----- Original Message -----
> From: "Eric Emsellem" <eric.emsel...@eso.org>
> To: matplotlib-users@lists.sourceforge.net
> Sent: Wednesday, July 12, 2017 8:18:28 AM
> Subject: [Matplotlib-users] Creating custom markers as the union of complex 
> vertices

> Hi
> 
> I have been looking for an elegant/simple (working!) solution to create
> new complex markers for matplotlib.
> 
> For example, I would like to design a new marker which is the union of a
> set of vertices, for example (just an example), two petals which are
> symmetric (see verts1 and verts2) and two lines above and below (see
> verts3, and verts4). I would also like to have the petal possibly filled
> (or not) and the edgecolor of each vertices with possibly various
> colours (one petal is blue, the other is orange). How should I proceed?
> 
> A naive way forward is to do something like (for a double petal, the
> left one not being filled up, the right one being filled, see the
> definition for verts1, verts2, verts3, verts4 below):
> 
> ## Code
> x = rand(10)
> y = rand(10)
> verts = [verts1, verts2, verts3, verts4]
> fc = ['k', 'None', 'None', 'None']
> ec = ['b', 'orange', 'k', 'k']
> 
> for lverts, lfc, lec in list(zip(verts, fc, ec)) :
>      scatter(x, y, marker= (lverts, 0), facecolor=lfc, edgecolor=lec,
> s=1000, label='My symbol')
> 
> ==> HOWEVER, since these are done in a for loop, it is not considered as
> a single marker when I do, for example, :
> 
> legend(loc=0)
> 
> QUESTION: how should I manage this? (couldn't find the answer on the net)
> 
> Suggestion are most welcome!
> 
> Thanks!
> Eric
> ======================================
> ###### Definition for the vertices
> if 1:
>     # verts1:
>     size, angrad = 10., 0.
>     rx = 4. * size
>     theta = np.linspace(-pi / 4., pi / 4., 151)
>     x = rx*np.sqrt(cos(2.*theta))*cos(theta)
>     y = rx*np.sqrt(cos(2.*theta))*sin(theta)
>     rotx = x * cos(angrad) + y * sin(angrad)
>     roty = -x * sin(angrad) + y * cos(angrad)
>     verts1 = list(zip(rotx,roty))
> 
>     # verts2:
>     size, angrad = 10.,  np.pi
>     rx = 4. * size
>     theta = np.linspace(-pi / 4., pi / 4., 151)
>     x = rx*np.sqrt(cos(2.*theta))*cos(theta)
>     y = rx*np.sqrt(cos(2.*theta))*sin(theta)
>     rotx = x * cos(angrad) + y * sin(angrad)
>     roty = -x * sin(angrad) + y * cos(angrad)
>     verts2 = list(zip(rotx,roty))
> 
>     # verts3
>     verts3 = list(zip([0.,0.],[0,0.1]))
> 
>     # verts4
>     verts4 = list(zip([0.,0.],[-0.1,-0.03]))
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to