首页 > 解决方案 > matplotlib 中不显示多边形上的点(散点)

问题描述

我想使用 matplotlib 绘制一些(简单的)多边形并在其上绘制一些点。多边形没问题,但散点不显示。有什么建议可以解决/纠正这个问题吗?

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

# polygons
gg = {'municipality 1': [(1, 1), (2, 5), (3, 3), (2, 0)],
      'municipality 2': [(3, 4), (4, 6), (5, 8), (6, 3)],
      'municipality 3': [(2, 0), (3, 3), (3, 4), (6, 3), (4, -3)]}

# points / places
gh = {'municipality 1': (4, 2), 'municipality 2': (2, 2), 'municipality 3': (5, 5)}

# set colors
gk = {'municipality 1': 'royalblue', 'municipality 2': 'tomato', 'municipality 3': 'springgreen'}

# figure
fig, ax = plt.subplots()

for gemeente in gg.keys():
    poly = Polygon(gg[gemeente], label=gemeente, facecolor=gk[gemeente], edgecolor='black', linewidth=1)
    ax.add_patch(poly)

for gemeente in gh.keys():
    ax.scatter(gh[gemeente][0], gh[gemeente][1], c='black', label=gemeente)

ax.legend()

plt.autoscale()
plt.show()

标签: pythonmatplotlibgeospatialpolygon

解决方案


这些点在那里,但隐藏在多边形下。您可以使用该zorder参数来设置哪个图在顶部:

for gemeente in gg:
    poly = Polygon(gg[gemeente], label=gemeente, facecolor=gk[gemeente], edgecolor='black', linewidth=1, zorder=1)
    ax.add_patch(poly)
    ax.scatter(gh[gemeente][0], gh[gemeente][1], c='black', label=gemeente, zorder=2)

在此处输入图像描述


推荐阅读