matplotlib에서 히스토그램의 왼쪽 세로축을 빈도, 오른쪽 세로축을 상대 빈도로 만듭니다.
14873 단어 파이썬matplotlib히스토그램
이 기사에서 할 일
이 기사의 속편입니다 → "matplotlib에서 히스토그램의 종축을 상대 도수(기둥 높이의 합계=1)나 상대 도수 밀도(히스토그램 전체의 면적=1)로 한다"
matplotlib에서 히스토그램
으로 그립니다. 다만, 사도적인 방법일지도 모릅니다.
참고 페이지(감사합니다)
[python] matplotlib에서 왼쪽과 오른쪽에 두 개의 축이있는 그래프를 작성하는 방법
소스 코드 (Jupyter Notebook) 및 그리기 결과
데이터 건수는 7500건으로, 평균치 50, 표준 편차 10의 정규 난수로 했습니다.
먼저 다음 파이썬 코드를 실행해 보겠습니다.
#%%
import numpy as np
import matplotlib.pyplot as plt
#%%
# データ作成
μ = 50
σ = 10
data = [ np.random.normal(μ, σ) for i in range(7500) ]
#%%
# 階級数
num_bins = 20
# グラフ描画
fig = plt.figure(figsize=(12, 8))
plt.legend()
plt.xlabel('x', fontsize=18)
plt.title('null', fontsize=18)
# (1) 縦軸を度数にしたヒストグラム
ax1 = fig.add_subplot(111)
ax1.set_ylabel('frequency', fontsize=18)
ax1.grid(True, color="dimgray")
ax1.set_axisbelow(True) # gridを最背面に移動
ax1.hist(data, bins=num_bins, rwidth=0.5, align="mid")
# (2) 縦軸を相対度数にしたヒストグラム
ax2 = ax1.twinx()
ax2.set_ylabel('relative frequency', fontsize=18)
ax2.grid(True, color="lightgrey", linestyle="--")
ax2.set_axisbelow(True) # gridを最背面に移動
weights = np.ones_like(data) / len(data)
ax2.hist(data, bins=num_bins, weights=weights, rwidth=0.5, align="right", color="red")
세로축=도수의 기둥을 디폴트의 색으로, 세로축=상대도수의 기둥을 빨강으로, 좌우에 나란히 묘화 했습니다.
이 양자의 높이가 동일하게 보이는 것을 사람이 확인합니다
빈도와 상대 빈도의 기둥 높이가 동일하게 보이면 기둥 색을 일치시킵니다.
"color="red""를 지정하지 않고 ax2.hist()를 호출합니다.
ax2의 Grid선이, ax1의 기둥보다 앞에 표시되어 버렸습니다.
이 가로선을 보이지 않으려면 다음 코드를 추가하여 ax1과 동일한 그래프를 덮어 쓰기로 결정했습니다.
# (3) (1)の見栄えを調整
ax3 = ax1.twinx()
ax3.set_yticklabels([])
ax3.hist(data, bins=num_bins, rwidth=0.5, align="mid")
완성판의 코드 전체는 이하와 같습니다.
#%%
import numpy as np
import matplotlib.pyplot as plt
#%%
# データ作成
μ = 50
σ = 10
data = [ np.random.normal(μ, σ) for i in range(7500) ]
#%%
# 階級数
num_bins = 20
# グラフ描画
fig = plt.figure(figsize=(12, 8))
plt.legend()
plt.xlabel('x', fontsize=18)
plt.title('null', fontsize=18)
# (1) 縦軸を度数にしたヒストグラム
ax1 = fig.add_subplot(111)
ax1.set_ylabel('frequency', fontsize=18)
ax1.grid(True, color="dimgray")
ax1.set_axisbelow(True) # gridを最背面に移動
ax1.hist(data, bins=num_bins, rwidth=0.5, align="mid")
# (2) 縦軸を相対度数にしたヒストグラム
ax2 = ax1.twinx()
ax2.set_ylabel('relative frequency', fontsize=18)
ax2.grid(True, color="lightgrey", linestyle="--")
ax2.set_axisbelow(True) # gridを最背面に移動
weights = np.ones_like(data) / len(data)
ax2.hist(data, bins=num_bins, weights=weights, rwidth=0.5, align="right")
# (3) (1)の見栄えを調整
ax3 = ax1.twinx()
ax3.set_yticklabels([])
ax3.hist(data, bins=num_bins, rwidth=0.5, align="mid")
사도적인 느낌이므로, 정공법이 있으면 가르쳐 주었으면 합니다.
Reference
이 문제에 관하여(matplotlib에서 히스토그램의 왼쪽 세로축을 빈도, 오른쪽 세로축을 상대 빈도로 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kanedaq/items/efda520298e5d8bd8f46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)