0

matplotlibとpyshpを使用してシェープファイルから読み取られた基本的なポリゴンを表示しようとしていますが、 すべての努力により、ポリゴンのない空の軸が生成されます。ベルギーの国境を示すデータセットを使用した、私の試みのいくつかを次に示します。

import shapefile as sf
r = sf.Reader("BEL_adm/BEL_adm0")
p=r.shapes()
b=p[0]
points = b.points

import matplotlib.pyplot as plt
from matplotlib.path import Path
imporst matplotlib.patches as patches

verts = points

verts = []
for x,y in points:
    verts.append(tuple([x,y]))

codes = ['']*len(verts)
codes[0] = Path.MOVETO
codes[-1] = Path.CLOSEPOLY

for i in range(1,len(verts)):
    codes[i]=Path.LINETO

path = Path(verts, codes)
fig = plt.figure()
ax = fig.add_subplot(111)
patch = patches.PathPatch(path, facecolor='orange', lw=2)
ax.add_patch(patch)
ax.set_xlim(-2,2)
ax.set_ylim(-2,2)
plt.show()

パッチを使ってもう一度試してみると、空のフレームが生成されます。

fig = plt.figure(figsize=(11.7,8.3))

ax = plt.subplot(111)
x,y=zip(*b.points)
import matplotlib.patches as patches
import matplotlib.pyplot as plt
bol=patches.Polygon(b.points,True, transform=ax.transAxes)

ax.add_patch(bol)
ax.set_ylim(0,60)
ax.set_xlim(0,200)
plt.show()

私が欠けているものを見て喜んでいるでしょう。
ありがとう、オズ

4

1 に答える 1

1

軸の範囲を設定するために呼び出す代わりにset_xlim(), set_ylim()、を使用できますax.autoscale()

Polygonバージョンでは、transform引数をax.transAxesに設定する必要はなく、次のように呼び出すだけです。

bol=patches.Polygon(b.points,True)
于 2012-06-04T00:51:09.867 に答える