今日はseabornでヒストグラムを描いてみようと思います。
ライブラリのインポートと描画設定
ライブラリのインポートと描画設定
import numpy as np
import pandas as pd
import seaborn as sns
# 描画設定
sns.set_style("whitegrid")
from matplotlib import rcParams
rcParams['font.family'] = 'Hiragino Sans' # Macの場合
#rcParams['font.family'] = 'Meiryo' # Windowsの場合
#rcParams['font.family'] = 'VL PGothic' # Linuxの場合
rcParams['xtick.labelsize'] = 12 # x軸のラベルのフォントサイズ
rcParams['ytick.labelsize'] = 12 # y軸のラベルのフォントサイズ
rcParams['axes.labelsize'] = 18 # ラベルのフォントとサイズ
rcParams['figure.figsize'] = 18,8 # 画像サイズの変更(inch)
描画用のデータを作成
趣向を変えて、numpyのrandom.normalを使ってサンプルデータを作成してみました。
平均が0.5、標準偏差が0.1になるように作成します。100000はレコード数です。
# インデータ作成
mu, sigma = 0.5, 0.1 # mean and standard deviation
s = np.random.normal(mu, sigma, 100000)
seabornでヒストグラムの描画
#seabornでヒストグラムの描画
sns.histplot(s,kde=True,bins=30,color="#4F81BD")
簡単に描くことができました。binの数は30にしています。(適当です)
matplotlibでヒストグラムの描画
# matplotlibでヒストグラムの描画
import matplotlib.pyplot as plt
# draw histgram
count, bins, patches = plt.hist(s, 30, density=False)
# draw probability density function
ax2 = plt.twinx()
ax2.grid(visible=False)
ax2.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (bins - mu)**2 / (2 * sigma**2) ),linewidth=2, color='r')
ax2.set_ylim(bottom=0.0,top=4.0)
seabornを使わないパターンも描いてみました。第二軸に確率密度関数を追加するのが少し大変かも知れません。
まとめ
seabornでヒストグラムを描いてみました。
バージョンによってメソッド名が変わることがあるかもしれませんのでご注意ください。
主要パッケージのバージョン一覧
import seaborn
import matplotlib
import pandas
import numpy
print("seaborn:",seaborn.__version__)
print("matplotlib:",matplotlib.__version__)
print("pandas:",pandas.__version__)
print("numpy:",numpy.__version__)
Out[0]
seaborn: 0.11.2 matplotlib: 3.5.1 pandas: 1.3.5 numpy: 1.22.1
参考
https://numpy.org/doc/stable/reference/random/generated/numpy.random.normal.html
https://seaborn.pydata.org/generated/seaborn.histplot.html