【问题标题】:Python: Fill area in radar plotPython:在雷达图中填充区域
【发布时间】:2020-07-28 17:26:37
【问题描述】:

我在这里制作了这个雷达图:

我期待将多边形下方的灰色区域填充为其他颜色。我没有找到任何方法。

生成此雷达图的代码如下所示:

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

fig, ax = plt.subplots(figsize=(20, 10))
ax.axis('equal')         ## setting the axis so that we can draw circles

ax.set(xlim=(-10, 23), ylim = (-15, 15))

# drawing the circles
circle_1 = plt.Circle((0, 0), 1.1, fc='none', ec='#D6D6D6', lw=28, zorder=3)
circle_2 = plt.Circle((0, 0), 2.57, fc='none', ec='#D6D6D6', lw=27, zorder=3)
circle_3 = plt.Circle((0, 0), 4.05, fc='none', ec='#D6D6D6', lw=27, zorder=3)
circle_4 = plt.Circle((0, 0), 5.5, fc='none', ec='#D6D6D6', lw=27, zorder=3)
circle_5 = plt.Circle((0, 0), 7.0, fc='none', ec='#D6D6D6', lw=27, zorder=3)

ax.add_artist(circle_1)
ax.add_artist(circle_2)
ax.add_artist(circle_3)
ax.add_artist(circle_4)
ax.add_artist(circle_5)


radar_1 = Polygon([[0, 6.45], [4.3, 4.3], [5.46, 0.02], [6.5, -3.55], [-0.04, -2.25], [-5.5, -3.5], [-6.55, 0.0], [-0.33, 4.7]],
                   fc='#246864', lw=1.2, zorder=2)
radar_2 = Polygon([[0, 6.45], [4.3, 4.3], [5.46, 0.02], [6.5, -3.55], [-0.04, -2.25], [-5.5, -3.5], [-6.55, 0.0], [-0.33, 4.7]],
                  fc='none', ec='#000000', zorder=3)

ax.add_artist(radar_1)
ax.add_artist(radar_2)


ax.axis('off')
plt.show()

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    使用set_clip_path(),圆可以被多边形裁剪:

    import matplotlib.pyplot as plt
    from matplotlib.patches import Polygon
    
    fig, ax = plt.subplots(figsize=(20, 10))
    ax.axis('equal')
    ax.set(xlim=(-10, 23), ylim=(-15, 15))
    
    vertices = [[0, 6.45], [4.3, 4.3], [5.46, 0.02], [6.5, -3.55], [-0.04, -2.25], [-5.5, -3.5], [-6.55, 0.0], [-0.33, 4.7]]
    radar_1 = Polygon(vertices, fc='#246864', lw=1.2, zorder=1)
    radar_2 = Polygon(vertices, fc='none', ec='#000000', zorder=4)
    ax.add_patch(radar_1)
    ax.add_patch(radar_2)
    
    for rad in [1.1, 2.57, 4.05, 5.5, 7.0]:
        circle1 = plt.Circle((0, 0), rad, fc='none', ec='#D6D6D6', lw=27, zorder=2)
        ax.add_patch(circle1)
        circle2 = plt.Circle((0, 0), rad, fc='none', ec='turquoise', lw=27, zorder=3)
        circle2.set_clip_path(radar_2)
        ax.add_patch(circle2)
    
    ax.axis('off')
    plt.tight_layout()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多