2017-10-10 7 views
0

matplotlibでベースマップをPythonで使用していましたが、新しいコードを作成していました。それを丸める方法を知っている。Matplotlibのベースマップポリゴンはエラーをスローしますが、何かがプロットされた場合に成功します

(lonList、latListを使用して)matplotlibでプロットしたいポリゴンを持っている場合、割り当てエラーでポリゴンをプロットするときにshowコマンドがエラーをスローします。または、別のマシンでは、空白の画面をプロットすることがわかりました。

ただし、同じリストを使用して散布図(下のコメント行)を追加しても機能します。また、線や散布図を独自に描画しても効果はありますが、ポリゴンパッチ自体を描画することはできません。なぜ私はこれが何であるかを知りませんし、それに関するバグレポートを見つけることができません。助けてください?

ところで、私はDebian Jessie 8をPython 2.7で実行しています。

#!/usr/bin/env python 

import matplotlib.pyplot as plt 
from mpl_toolkits.basemap import Basemap 
from matplotlib.collections import PatchCollection 
from matplotlib.patches  import Polygon 

def singlePatchExample(): 
    patches = [] 
    fig = plt.figure(figsize=(19.2,10.8)) 
    ax = plt.subplot(111) 

    lonSW = -8.0 
    latSW = 51.0 
    lonNE = -6.0 
    latNE = 53.0 
    centLon = (lonSW + lonNE)/2.0 
    centLat = (latSW + latNE)/2.0 

    baseMap = Basemap(llcrnrlon=lonSW,llcrnrlat=latSW,urcrnrlon=lonNE,urcrnrlat=latNE,\ 
       resolution='i', lat_0 = centLon, lon_0 = centLat) 

    longList = [ -7.0, -7.5, -7.7 ] 
    latList = [ 51.5, 52.0, 52.5 ] 

    x, y = baseMap(longList, latList) 
    polygon = Polygon(zip(x,y), True) 
    patches.append(polygon) 

    patchInSingleImage = PatchCollection(patches, alpha=0.2) 
    ax.add_collection(patchInSingleImage) 
    ax.set_title("Single Patch Example, (without points????)") 

    #baseMap.scatter(x, y, color='r') 

    plt.show() 

singlePatchExample() 

答えて

2

コードを実行すると、軸を持つ図形が表示されますが、ポリゴンは表示されません。これは実際にはベースマップの有無と同じでなければなりません。その理由は、axesの中の唯一のアーティストがPatchCollection(またはたぶん任意のコレクション)である場合、matplotlibは自動スケールしません。

このような場合の解決策は、コレクションを追加した後

ax.autoscale() 

を追加することです。

マップ上に実際に何もないので、スケーリングはmatplotlib軸に引き継がれる必要があります。線幅ゼロで不要なものをマップに描画することによって、マップが実際に軸に接続されていることを確認できます。

baseMap.drawrivers(linewidth=0) 

これはax.autoscale()余分になるだろうし、それはそれにいくつかのデータを持っていたかのようにマップを拡大縮小します。同じように、平行線または子午線を描くことは、実際に地図を軸に描画するものと同じ効果を持ちます。

baseMap.drawparallels(latList) 
+0

ありがとうございますが、元のSW、NEの境界はどのように保持しますか。これは保存することも重要です。私はまだこれを推測することができなかったので、あなたに+1の価値があると思います。それはまだ私のバグのように見えます。 –

+0

地図上に何もない限り、地図は表示されません。軸に地図があることを確認してください。私はいくつかの可能な選択肢で答えを更新しました。 – ImportanceOfBeingErnest

関連する問題