matplotlib の hist
データをプロットして、ヒストを作って、確認する
いつものように、乱数でデータを作って、プロットとヒストとその結果を表示してみる
import matplotlib.pyplot as plt import numpy as np def print_bins(n,bins): tmp = 'hist data:\n' if len(n) != len(bins)-1: return "Error not equal n,(bins-1).\n" elif len(bins) < 1: return "Error bins\n" elif len(bins) == 2: return tmp + '[{},{}] {}\n'.format(bins[0],bins[1],n[0]) for st,ed,ct in zip(bins[0:-2],bins[1:],n): tmp += '[{:>8.3f},{:>8.3f}) {:>6.0f}\n'.format(st,ed,ct) tmp += '[{:>8.3f},{:>8.3f}] {:>6.0f}\n'.format(bins[-2],bins[-1],n[-1]) return tmp def print_info(dat): tmp = 'info:\n' tmp += 'count = {}\n'.format(len(dat)) tmp += 'min = {}\n'.format(np.amin(dat)) tmp += 'max = {}\n'.format(np.amax(dat)) tmp += 'mean = {}\n'.format(np.mean(dat)) tmp += 'std = {}\n'.format(np.std(dat)) tmp += 'var = {}\n'.format(np.var(dat)) return tmp
今回は、事前にやりたいことを確認していたので
cnt = 100 dat = np.random.normal(1, 2, cnt) fig = plt.figure() fig.dpi = 200 # 200dpi #fig, ax_lst = plt.subplots(2, 2) ax1=fig.add_subplot(2,2,1) # row=1,col=2,index=1 ax2=fig.add_subplot(2,2,2) # row=1,col=2,index=2 ax3=fig.add_subplot(2,2,3) # row=1,col=2,index=3 ax4=fig.add_subplot(2,2,4) # row=1,col=2,index=4 x = np.arange(0, cnt) ax1.set_title("randn({})".format(cnt)) ax1.plot(x,dat) ax2.set_title("hist") pHist = ax2.hist(dat,bins=10,orientation='horizontal') dat_info = print_info(dat) ax3.tick_params(labelbottom=False,labeltop=False,labelleft=False,labelright=False, bottom=False, top=False, left=False, right=False) ax3.text(0.1,1-0.1,dat_info,size=6,family='monospace',horizontalalignment='left', verticalalignment='top',transform=ax3.transAxes) hist_text = print_bins(pHist[0],pHist[1]) ax4.tick_params(labelbottom=False,labeltop=False,labelleft=False,labelright=False, bottom=False, top=False, left=False, right=False) ax4.text(0.1,1-0.1,hist_text,size=6,family='monospace',horizontalalignment='left', verticalalignment='top',transform=ax4.transAxes) plt.show()
【解説】左上データをプロット、右上データをヒストプロット、右下ヒストのデータ、左下データの平均値とかいろいろ