2013-06-07 3 views
1

나는 비슷한 질문을하고 있지만이 코드를 사용해 본 결과 내 환경에서는 작동하지 않습니다. 그래서 나는 큰 데이터 목록 (부동 소수점 수)을 가지고 있으며 이것을 히스토그램으로 나타내려고합니다. 절대 빈도를 쉽게 구상 할 수 있지만 상대 빈도 (세로/가로 비율 (%))를 표시하고 싶습니다. 내 코드는 다음과 같습니다matplotlib 막대 그래프의 상대 주파수 대 절대 ​​값 플로팅

fig = plt.figure() 
ax = fig.add_subplot(1,1,1) 
#1 - n, bins, patches = ax.hist(zdata, bins=ceil(min-max), normed=1, cumulative=0) 
#2 - n, bins, patches = ax.hist(zdata, weights=np.zeros_like(data) + 1./data.size) 
ax.set_xlabel('Atomic z coordinate', size=ceil(min-max)) 
ax.set_ylabel('Relative Frequency') 
ax.legend 
plt.show() 

나는 파이썬은 정수로 빈 카운트를 요구 것으로 나타났습니다,하지만 난 그래서 수정하기 쉬운 내가 70을 사용하는 것을 알고있다. 필자가 더 긴급한 질문은, 내가이 스 니펫에서 주석 처리 한 두 명령 모두를 시도 할 때도 작동하지 않는다는 것입니다. 사례 1은 오류를 발생시키지 않지만 명령을 완료하고 show()를 호출하면 그림이 나타나지 않습니다. 사례 2는 NameError를 제기하고 "데이터"가 무엇인지 알지 못한다고 불평합니다. 다른 질문에서 템플릿을 따라 갔고 "데이터"가 무엇인지 확신 할 수 없습니다. 값의 배열 (목록)은 zdata입니다. 또한 저장소와 패치간에 차이점이 있습니까?

저는 Python 2.7.3을 사용하고 IDE는 Spyder 2.1.11입니다. 많은 질문에 감사 드리며 이것이 과거의 질문과 매우 유사하다면 사과드립니다.

답변

1

명령 np.zeros_like(data)은 배열 data과 동일한 길이 및 데이터 유형의 0으로 채워지고 배열 될 것임을 의미합니다. 이 명령을 사용하려면 data이라는 배열을 정의해야합니다 (NameError은 정의되지 않은 변수 이름을 사용하려고 함을 의미합니다). zdata으로 바꾸려면 zdata이 있기 때문에 을 사용하거나 가중치가 입력 데이터와 동일한 길이가되도록 추측하고 있습니다.

참고

이 쓸 수있는 더 좋은 방법 :

np.zeros_like(data) + 1./data.size 

np.ones_like(data)/data.size 
+0

내가에 zdata와 주석 # 2에서 명령을 시도, 감사 것 데이터의 장소, 그리고 그것은 "크기"속성을 사용할 수 없다는 속성 오류를 제기 목록 (zdata는 목록입니다) – Spyros

+0

나는 ... 나는'zdata'가 정렬. 두 가지 옵션이 있습니다. 1)'zdata = np.array (zdata)'를 사용하여'zdata'를 배열로 변환하거나, 2)'zdata.size' 대신'len (zdata)'를 사용하십시오. – SethMMorton

+0

감사합니다. 정말로 빠른 도움! – Spyros

관련 문제