데이터 목록과 함께 Python에서 Matplotlib를 사용하여 히스토그램을 그리는 방법은 무엇입니까?
matplotlib.hist()
함수를 사용하여 히스토그램을 그리 려고하는데 어떻게해야할지 모르겠습니다.
목록이 있습니다
probability = [0.3602150537634409, 0.42028985507246375,
0.373117033603708, 0.36813186813186816, 0.32517482517482516,
0.4175257731958763, 0.41025641025641024, 0.39408866995073893,
0.4143222506393862, 0.34, 0.391025641025641, 0.3130841121495327,
0.35398230088495575]
이름 (문자열) 목록.
확률을 각 막대의 y 값으로 만들고 x 값으로 이름을 지정하려면 어떻게해야합니까?
히스토그램을 원하면 x 축에 bin이 있으므로 x- 값에 '이름'을 첨부 할 필요가 없습니다.
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.random.normal(size = 1000)
plt.hist(x, normed=True, bins=30)
plt.ylabel('Probability');
그러나 데이터 포인트 수가 제한되어 있고 막대 그래프가 필요한 경우 레이블을 x 축에 연결할 수 있습니다.
x = np.arange(3)
plt.bar(x, height= [1,2,3])
plt.xticks(x+.5, ['a','b','c'])
문제가 해결되면 알려주세요.
2018 년 11 월 26 일 수정
아래 주석에 따라 Matplotlib 3.0.2부터 다음 코드로 충분합니다.
x = np.arange(3)
plt.bar(x, height= [1,2,3])
plt.xticks(x, ['a','b','c']) # no need to add .5 anymore
2019 년 5 월 23 일 수정
히스토그램에 관한 한 normed
param은 더 이상 사용되지 않습니다.
MatplotlibDeprecationWarning : 'normed'kwarg는 Matplotlib 2.1에서 더 이상 사용되지 않으며 3.1에서 제거됩니다. 대신 '밀도'를 사용하십시오.
따라서 Matplolib 3.1
대신 다음과 같습니다.
plt.hist(x, normed=True, bins=30)
다음과 같이 작성해야합니다.
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.random.normal(size = 1000)
plt.hist(x, density=True, bins=30) # density
plt.ylabel('Probability');
아직 matplotlib를 설치하지 않은 경우 명령을 시도하십시오.
> pip install matplotlib
도서관 가져 오기
import matplotlib.pyplot as plot
히스토그램 데이터 :
plot.hist(weightList,density=1, bins=20)
plot.axis([50, 110, 0, 0.06])
#axis([xmin,xmax,ymin,ymax])
plot.xlabel('Weight')
plot.ylabel('Probability')
히스토그램 표시
plot.show()
출력은 다음과 같습니다.
이것은 매우 둥근 방법이지만 이미 bin 값을 알고 있지만 소스 데이터가없는 히스토그램을 만들고 싶다면 np.random.randint
함수를 사용하여 각 범위 내에서 올바른 수의 값을 생성 할 수 있습니다. 그래프에 대한 hist 함수의 bin, 예를 들면 다음과 같습니다.
import numpy as np
import matplotlib.pyplot as plt
data = [np.random.randint(0, 9, *desired y value*), np.random.randint(10, 19, *desired y value*), etc..]
plt.hist(data, histtype='stepfilled', bins=[0, 10, etc..])
레이블의 경우 x 눈금을 bin과 정렬하여 다음과 같은 결과를 얻을 수 있습니다.
#The following will align labels to the center of each bar with bin intervals of 10
plt.xticks([5, 15, etc.. ], ['Label 1', 'Label 2', etc.. ])
'Programing' 카테고리의 다른 글
10 Fall Creators Update [Local Repo]에서 승리 한 이후로 매우 느린 (거북이) (0) | 2020.11.12 |
---|---|
Java에 브라우저를 임베드하는 방법이 있습니까? (0) | 2020.11.12 |
Android context.getResources.updateConfiguration () 지원 중단됨 (0) | 2020.11.11 |
일반 텍스트에서 가장 적게 사용 된 구분 문자 <ASCII 128 (0) | 2020.11.11 |
xpath를 사용하여 노드의 N 번째 자식 가져 오기 (0) | 2020.11.11 |