HOWTO · Matplotlib

Matplotlib 히스토그램에서 빈의 크기를 수동으로 설정하는 방법

Matplotlib에서 빈의 크기를 수동으로 설정하기 위해 필요한 너비에 대한 빈의 수를 계산하고 통과합니다. bin을 hist2d() 함수의 매개 변수로 사용합니다.

히스토그램을 그리려면 bin 개수 n이 매개 변수로 전달되는 hist2d() 함수를 사용합니다. 필요한 크기를 유지하기 위해 필요한 빈 수를 계산하여 빈 크기를 설정할 수 있습니다.

hist()함수에 대한 매개 변수로서 bin 경계

hist 함수에 대한 구문:

hist(x,
     bins: NoneType=None,
     range: NoneType=None,
     density: NoneType=None,
     weights: NoneType=None,
     cumulative: bool=False,
     bottom: NoneType=None,
     histtype: str=builtins.str,
     align: str=builtins.str,
     orientation: str=builtins.str,
     rwidth: NoneType=None,
     log: bool=False,
     color: NoneType=None,
     label: NoneType=None,
     stacked: bool=False,
     normed: NoneType=None,
     data: NoneType=None,
     **kwargs)

Matplotlib에서 bin의 크기를 설정하기 위해 bin 수 대신 bin 경계를 가진 목록을bin 매개 변수로 전달합니다.

import numpy as np
import numpy.random as random
import matplotlib.pyplot as plt

data = np.random.random_sample(100) * 100.0
plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 60, 80, 100])
plt.xlabel("Value")
plt.ylabel("Counts")
plt.title("Histogram Plot of Data")
plt.grid(True)
plt.show()

Matplotlib 전달 목록의 빈 크기를 매개 변수로 설정하십시오

위의 예제에서 빈 경계와 간접 빈 너비를 수동으로 설정했습니다. np.arange를 사용하여 같은 간격의 경계를 찾을 수도 있습니다.

빈을 같은 간격으로 만들기 위해, np.arange를 사용하여 같은 간격의 경계를 찾을 수 있습니다

import numpy as np
import numpy.random as random
import matplotlib.pyplot as plt

binwidth = 10
data = np.random.random_sample(100) * 100.0
plt.hist(data, bins=np.arange(min(data), max(data) + binwidth, binwidth))
plt.xlabel("Data")
plt.ylabel("Counts")
plt.title("Histogram Plot of Data")
plt.grid(True)
plt.show()

Matplotlib 전달 목록의 동일하게 분산 된 빈을 매개 변수로

경고
np.arange(start, stop, step)에 의해 생성 된 간격은start를 포함하기 때문에 np.arange의 두 번째 매개 변수는 max(data) + binwidth이지만 max(data)는 아닙니다. stop을 제외합니다. 따라서 실제 정지를max(data)로하려면binwidth 간격을max(data)에 추가해야합니다.

원하는 너비에서 구간 수 계산

구간 수를 찾기 위해 ‘최대 값-최소값’을 원하는 구간 너비로 나눈 결과를 계산합니다.

import numpy as np
import matplotlib.pyplot as plt


def find_bins(observations, width):
    minimmum = np.min(observations)
    maximmum = np.max(observations)
    bound_min = -1.0 * (minimmum % width - minimmum)
    bound_max = maximmum - maximmum % width + width
    n = int((bound_max - bound_min) / width) + 1
    bins = np.linspace(bound_min, bound_max, n)
    return bins


data = np.random.random_sample(120) * 100
bins = find_bins(data, 10.0)
plt.hist(data, bins=bins)
plt.xlabel("Data")
plt.ylabel("Counts")
plt.title("Histogram Plot")
plt.show()

주어진 너비에서 빈 수를 찾습니다