Is it possible to control matplotlib marker orientation? Is it possible to control matplotlib marker orientation? python python

Is it possible to control matplotlib marker orientation?


You can create custom polygons using the keyword argument marker and passing it a tuple of 3 numbers (number of sides, style, rotation).

To create a triangle you would use (3, 0, rotation), an example is shown below.

import matplotlib.pyplot as pltx = [1,2,3]for i in x:    plt.plot(i, i, marker=(3, 0, i*90), markersize=20, linestyle='None')plt.xlim([0,4])plt.ylim([0,4])plt.show()

Plot


I just wanted to add a method to rotate other non-regular polygon marker styles. Below I have rotated the "thin diamond" and "plus" and "vline" by modifying the transform attribute of the marker style class.

import matplotlib as mplimport matplotlib.pyplot as pltimport numpy as npfor m in ['d', '+', '|']:    for i in range(5):        a1, a2  = np.random.random(2)        angle = np.random.choice([180, 45, 90, 35])        # make a markerstyle class instance and modify its transform prop        t = mpl.markers.MarkerStyle(marker=m)        t._transform = t.get_transform().rotate_deg(angle)        plt.scatter((a1), (a2), marker=t, s=100)

enter image description here


Have a look at the matplotlib.markers module. Of particular interest is the fact that you can use an arbitrary polygon with a specified angle:

marker = (3, 0, 45)  # triangle rotated by 45 degrees.