【问题标题】:How to rotate matplotlib fill-style-markers?如何旋转 matplotlib 填充样式标记?
【发布时间】:2019-01-18 18:09:42
【问题描述】:

黑色是 matplotlib 标记 that are able to rotate 。蓝色/橙色是fill-style-markers,我没有设法以同样的方式旋转它们。

这是生成图形的代码。在这个版本中,t 没有被使用。

import matplotlib as mpl
import matplotlib.pyplot as plt

x = [0,10,20,30,40,50,60,70,80,90]
for i in x:
    t = mpl.markers.MarkerStyle(marker='o')
    t._transform = t.get_transform().rotate_deg(-i)
    marker_style = dict(color='b',  markerfacecoloralt='orange', markeredgecolor='w', markersize=25,
                        marker='o' )    
    plt.plot(i, i, marker=(2, 0, -i), c='k',markersize=30, linestyle='None')
    plt.plot(i, i, marker=(3, 0, -i), c='k',markersize=10, linestyle='None')
    plt.plot(i, i+20,fillstyle='top', **marker_style)
plt.margins(0.15); plt.grid();plt.show()

我试过没有成功:

marker_style = dict(....., marker=(3, 3, -i) ) 
or
marker_style = dict(....., marker=t ) 
or
plt.plot(i, i+20,fillstyle='top', marker=(3, 3, -i) 

如果您知道并告诉如何将这些东西放在一起,谢谢! plt.scatter() 的解决方案也可以。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    我不知道是否可以使用标记或MarkerStyle来完成,文档仅指定如何填充除以一半的符号。您可以通过将 2 个半圆放在一起并相应地旋转它们来模仿这种行为。

    import matplotlib.pyplot as plt
    import matplotlib as mpl
    
    plt.figure(1)
    
    x = [0,10,20,30,40,50,60,70,80,90]
    
    ax=plt.gca()
    rot=0
    
    for i in x:
    
        HalfA=mpl.patches.Wedge((i, i+20), 5,theta1=0-rot,theta2=180-rot, color='r')
        HalfB=mpl.patches.Wedge((i, i+20), 5,theta1=180-rot,theta2=360-rot, color='b')
    
        rot=rot+360/len(x)
    
        ax.add_artist(HalfA)
        ax.add_artist(HalfB)
    
        ax.plot(i, i, marker=(2, 0, -i), c='k',markersize=30, linestyle='None')
        ax.plot(i, i, marker=(3, 0, -i), c='k',markersize=10, linestyle='None')
    
    
    ax.set_xlim((-10, 110))
    ax.set_ylim((-10, 130))
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 2021-01-01
    • 1970-01-01
    • 2016-07-06
    • 2021-01-14
    • 2019-01-19
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多