【はじめに】
今回は、Matplotlibのmatplotlib.pyplot.histメソッドの引数を一覧にしました。
また、実際に引数を使用して基本的な散布図の作成方法も紹介します。
使う機会の多いグラフの一つだと思うので、この機会にマスターしていきましょう。
本記事の内容
- matplotlob.pyplot.histの引数一覧
- 基本的なヒストグラムを作成する
- 棒の位置・方向に関する設定
- 積み上げヒストグラムを作成する
【matplotlib.pyplot.histの引数一覧】
matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)
引数 | 指定する値 |
---|---|
x (必須) | ヒストグラムを作成するためのデータの配列 |
bins | ビン (表示する棒) の数。階級数。(デフォルト値: 10) |
range | ビンの最小値と最大値を指定。(デフォルト値: (x.min(), x.max())) |
density | True に設定すると合計値が 1 になるように正規化する。 (デフォルト値: False) |
cumulative | True に設定すると、累積ヒストグラムを出力。 (デフォルト値: False) |
bottom | 各棒の下側の余白を数値または配列で指定。 |
histtype | ‘bar’ (通常のヒストグラム), ‘barstacked’ (積み上げヒストグラム), ‘step’ (線), ‘stepfilled’ (塗りつぶしありの線) から選択。 (デフォルト値: ‘bar’) |
align | 各棒の中心を X 軸目盛上のどの横位置で出力するか。 ‘left’, ‘mid’, ‘right’ から選択。(デフォルト値: ‘mid’) |
orientation | 棒の方向。’horizontal’ (水平方向), ‘vertical’ (垂直方向) から選択。(デフォルト値: ‘vertical’) |
rwidth | 各棒の幅を数値または、配列で指定。 |
log | True に設定すると、縦軸を対数目盛で表示します。 |
color | ヒストグラムの色。配列で指定し、データセット単位で色を指定することができます。 |
label | 凡例を載せる際に使用します。 |
stacked | True に設定すると積み上げヒストグラムで出力します。False に設定すると、横に並べて出力します。 |
【基本的なヒストグラムを作成する】
使用するデータは、「統計科学研究所」のWebサイトの統計データの中から、「教科の成績データ」を使用します。
データは次のコマンドでダウンロードすることが出来ます。
$ curl https://statistics.co.jp/reference/statistical_data/seiseki.csv -O
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
%matplotlib inline
df = pd.read_csv('data3.csv', encoding='shift-jis')
print(f'データ数:{len(df)}')
df.head()
データ数:166
国語 | 社会 | 数学 | 理科 | 音楽 | 美術 | 体育 | 技科 | 英語 | |
---|---|---|---|---|---|---|---|---|---|
0 | 30 | 43 | 51 | 63 | 60 | 66 | 37 | 44 | 20 |
1 | 39 | 21 | 49 | 56 | 70 | 72 | 56 | 63 | 16 |
2 | 29 | 30 | 23 | 57 | 69 | 76 | 33 | 54 | 6 |
3 | 95 | 87 | 77 | 100 | 77 | 82 | 78 | 96 | 87 |
4 | 70 | 71 | 78 | 67 | 72 | 82 | 46 | 63 | 44 |
必須の引数のみでヒストグラムを作成する | x
国語の点数を引数x
に指定してヒストグラムを作成してみます。
x = df['国語']
x.head()
0 30
1 39
2 29
3 95
4 70
Name: 国語, dtype: int64
plt.hist(x)
棒の数を指定する | bins
引数bins
に20を指定してヒストグラムを作成します。
plt.hist(x, bins=20)
棒の最小値と最大値を指定する | range
最小値を50、最大値を100を指定してみます。
plt.hist(x, range=(50, 100))
正規化 (合計すると1になるよう調整)してヒストグラムを作成する | density
plt.hist(x, bins=20, density=True)
累積値を出力する | cumulative
引数cumulative
にTrue
を指定すると、累積ヒストグラムを作成出来ます。
plt.hist(x, bins=20, cumulative=True)
縦軸を対数目盛で表示する | log
引数`cumulative`に`True`を指定すると、対数目盛でヒストグラムを作成出来ます。
plt.hist(x, log=True)
棒の幅を指定する | rwidth
帽の幅を0.8にして、ヒストグラムを作成してみます。
plt.hist(x, rwidth=0.8)
棒の色を指定する | color
棒の色を赤にして、ヒストグラムを作成してみます。
plt.hist(x, color='red')
塗りつぶしなしの線でヒストグラムを作成する | histtype
引数histtype
にstep
を指定すると、塗りつぶしなしのヒストグラムをヒストグラムを作成出来ます。
plt.hist(x, histtype='step')
【棒の位置・方向に関する設定】
各棒の位置を目盛上の左側(右側)に設定する | align
引数align
にleft(right)
を指定すると、棒の位置を変えることが出来ます。
plt.hist(x, align='left')
plt.hist(x, align='right')
棒の向きを横方向に出力 | orientation
引数orientation
にhorizontal
を指定すると棒の向きを横方向にすることが出来ます。
plt.hist(x, orientation='horizontal')
【積み上げヒストグラムを作成する】
複数のデータをまとめてヒストグラムを作成する場合、引数x
にデータをリストで渡します。
国語と英語の点数を引数x
にリストで指定してヒストグラムを作成してみます。
y = df['英語']
y.head()
0 20
1 16
2 6
3 87
4 44
Name: 英語, dtype: int64
引数histtypeで指定して作成する | histtype
引数histtype
にbarstacked
を指定すると、積み上げヒストグラムを作成出来ます。
plt.hist([x,y], histtype='barstacked')
引数stackedで指定して作成する | stacked
引数stacked
にTrue
を指定すると、積み上げヒストグラムを作成出来ます。
plt.hist([x,y], stacked=True)
積み上げヒストグラムの色を指定する | color
引数color
にリストで色を指定します。
plt.hist([x,y], stacked=True, color=['red', 'blue'])
複数の棒を並べてヒストグラムを作成する
引数stacked
にFalse
を指定すると、複数の棒を並べてヒストグラムを作成することが出来ます。
plt.hist([x,y], stacked=False)
ポイント
引数stacked
を使用しなくても、デフォルトで棒を並べてヒストグラムを作成出来ます。
凡例を表示する | label
# 引数labelに指定するレベルをリストで用意します。
labels = ['国語', '英語']
plt.hist([x,y], label=labels)
# 凡例を表示します。
plt.legend()
【さいごに】
今回は、Matplotlibのmatplotlib.pyplot.histメソッドの引数を紹介しました。
どのデータをヒストグラムとして描画すれば良いのかは慣れが必要です。
連続変数はhist
、離散変数はbar
を使用すると覚えると良いでしょう。
また、使用したCSVファイルやJupyter NotebookはGitHubに公開しています。
Jupyter Notebookは下記コマンドでダウンロードできるので、自由に使って是非練習してみてください。
$ curl https://raw.githubusercontent.com/nakachan-ing/python-references/master/Matplotlib%26Seaborn/matplotlib.pyplot.histの引数.ipynb -O
コメント