plt.hist ()를 사용한 히스토그램 플롯

저는 Python 초보자이며 -0.2에서 0.2 사이의 값 목록을 플로팅하고 싶습니다. 목록은 다음과 같습니다.

[...-0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01489985147131656, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088...and so on]. 

통계에서 데이터를 클래스로 그룹화하여 막대 그래프에 대한 유용한 플롯을 얻는 방법을 배웠습니다.

Python에서 클래스를 내 플롯에 추가하려면 어떻게해야합니까?

내 코드는

plt.hist(data) 

입니다. 히스토그램은 여기에 이미지 설명 입력

처럼 보입니다.

하지만 mg src = “https://i.stack.imgur.com/k5rwR.png”alt = “여기에 이미지 설명 입력”title = “예시 일뿐입니다. 배율이 다릅니다!”>

댓글

  • 불명확합니다. 데이터를 그룹화하는 방법 또는 그룹화 된 데이터를 그리는 방법을 요청하십니까?
  • @ Stephen Rauch : plt.hist () 또는 다른 방법으로 데이터를 그룹화하도록 요청하고 있습니다. 데이터를 그룹화 한 후 플롯을 실현하고 싶습니다. @ Media : plt.hist (cum_returns_10_5, bins = range (min (cum_returns_10_5), max (cum_returns_10_5) + binwidth, binwidth)) NameError : 이름 ' binwidth '가 정의되지 않았습니다. plt.hist (data, bins = range (min (data), max (data) + binwidth) , bin width)) 솔루션에서 오류가 발생합니다 (위 참조).
  • 이 정보를 답에 입력해서는 안됩니다. 댓글을 달거나 질문을 수정하거나 둘 다 할 수 있습니다.
  • @Tom 커뮤니티에 오신 것을 환영합니다. 댓글을 사용하세요. 작동하지 않는 이유는 설정해야하기 때문입니다. 설명을위한 일반적인 변수이므로 값 대신 값을 설정해야합니다.
  • @Media 힌트에 감사드립니다! @Stephen Rauch : 너무 친절하고 목록에 작성된 데이터를 파이썬으로 그룹화하여 플롯 할 수 있는지에 대한 의견을 주시겠습니까? 도움을 주셔서 감사합니다. 🙂

답변

히스토그램은 유효하지만 빈이 너무 많아서 유용합니다.

균등 한 간격의 Bin을 원하는 경우 plt.hist<의 bins 인수를 통해 해당 숫자를 전달하면됩니다. / div>, 예 :

plt.hist(data, bins=10) 

저장소에 특정 가장자리가 있도록하려면 :

plt.hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]) 

마지막으로 auto (사용 가능한 방법은 numpy.histogram_bin_edges 문서에 지정되어 있음) :

plt.hist(data, bins="auto") 

전체 코드 샘플

import matplotlib.pyplot as plt import numpy as np # fix the random state for reproducibility np.random.seed(19680801); # sum of 2 normal distributions n = 500; data = 10 * np.random.randn(n) + 20 * np.random.randn(n) + 20; # plot histograms with various bins fig, axs = plt.subplots(1, 3, sharey=True, tight_layout=True, figsize=(9,3)); axs[0].hist(data, bins=10); axs[1].hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]); axs[2].hist(data, bins="auto"); 

여기에 이미지 설명 입력

답변

빈 크기를 지정해야합니다. , 만약 I “v e는 질문을 알아 냈습니다. 여기 에 명시되어 있습니다.

빈 경계가있는 목록을 제공 할 수 있습니다.

plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 100]) 

균등하게 분배하려면 범위를 사용하면됩니다.

plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth)) 

여기 여기 를 참조하세요.

댓글

  • 균등하게 분산되도록하려면 더 간단한 방법이 있습니다. bin 경계를 인수로 지정하는 대신 matplotlib에 원하는 bin 수를 알려주십시오. plt.hist(data, bins=20).
  • @Xavier 답변 해 주셔서 감사합니다. 답변을 제출하고 싶을 것 같습니다. 아시다시피 질문은 아직 종료되지 않았습니다. 🙂

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다