2017-04-20 8 views
3

matplotlibで円をプロットしようとしていますが、結果は常に空のプロットです。Matplotlibプロットが空白になる

など。

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.patches as mpatches 
import matplotlib.collections as mcollections 

fig = plt.figure() 
fig.set_size_inches(18.5, 10.5, forward=True) 
ax = fig.add_subplot(111, aspect='equal') 

x = np.array([17., 29., 41., 3., 15.]) 
y = np.array([21., 41., 30., 19., 5.]) 
r = np.array([22.8035085, 46.04345773, 46.61544808, 16., 12.16552506]) 

patches = [mpatches.Circle((xx, yy), rr) for xx, yy, rr in zip(x, y, r)] 
collection = mcollections.PatchCollection(patches) 
ax.add_collection(collection) 

fig.savefig("test.png") 

これは、add_artistを試したときと同じように、空のプロットを生成します。うまくいけば、誰かが私が間違っているところへ私を向けることができます!ありがとうございました

+0

同じ問題になります:私の答えよりも良い、http://stackoverflow.com/questions/42875357/deformed-rectangulars-with-decreasing-trend – ImportanceOfBeingErnest

答えて

4

提供される他の回答に加えて、あなたは、保存前ax.autoscale()を使用することができますプロット。それにはここに

enter image description here

+0

クール。 *シンプルは複合*より優れています。 – Feishi

+0

ありがとう!!私はパッチがそのように振る舞うかは知らなかった – erocoar

1

あなたの問題はここには描かれていません。プロットが空白の理由は、matplotlibがパッチの範囲に応じて軸を自動調整していないためです。

通常は、plt.plot(), plt.scatter() ...などのいくつかのメインのプロット関数を使用して自動調整ジョブを実行します。限り、私は懸念しているように、、三角形、四角形、円などの幾何学的図形を描画するために設計されていません。これはmatplotlibpatchesと呼ばれる理由を説明することもできます。

だから、あなたが何をする必要があるか、あなたの場合にはこのようなものを使用してmanully軸の範囲を指定するには、次のとおりです。

plt.axis([-50, 100, -50, 100]) 
関連する問題