2017-04-20 2 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()를 사용할 수 있습니다

그래서 당신이해야 할 일을 manully 귀하의 경우 같은 것을 사용하여 축 범위를 지정하는 것입니다 음모. 그는 여기

enter image description here

+0

쿨. * 단순한 것은 복잡한 것보다 낫다. – Feishi

+0

감사합니다 !! 나는 그런 식으로 행동하는 패치를 몰랐다. – erocoar

1

여기 당신의 문제는 뽑힌 것이 아닙니다. 플롯이 비어있는 이유는 입니다. matplotlib은 패치 범위에 따라 축을 자동 조정하지 않았습니다.

일반적으로 plt.plot(), plt.scatter() ...과 같은 일부 기본 플롯 기능으로 자동 조정 작업을 수행합니다. 내가 아는 한, 삼각형, 직사각형 및 원과 같은 기하학적 인물을 그리기 위해 설계된 것은 아닙니다. 또한 patchesmatplotlib에 왜 호출했는지 설명 할 수 있습니다. 을 저장하기 전에

가 제공하는 다른 대답에 추가
plt.axis([-50, 100, -50, 100]) 
관련 문제