Is it possible to control matplotlib marker orientation?

六月ゝ 毕业季﹏ 提交于 2019-11-27 14:39:44

问题


I would like to know if I have a triangular marker, is it possible to control its orientation? I have a series of facets, with their corresponding vertices, and I would like to plot a basemap of them. I know it is straight forward script when using Mayavi and tvtk.PolyData. But since I'm dealing with maps and not 3D objects, things got a bit complicated.

ps: for maps I'm using basemap tool.

I thanks for any help.


回答1:


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 plt

x = [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()




回答2:


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 mpl
import matplotlib.pyplot as plt
import numpy as np

for 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)




回答3:


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.


来源:https://stackoverflow.com/questions/23345565/is-it-possible-to-control-matplotlib-marker-orientation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!