Matplotlibを使ってJupyter Notebook上でヒストグラムや散布図を表示させる方法です。
この記事の内容は、以下の記事に従って準備したJupyter Notebookの環境で試しています。
Jupyter NotebookをDockerを使って簡単にインストールし起動(nbextensions、Scalaにも対応) - Qiita
この環境でブラウザで8888番ポートにアクセスして、Jupyter Notebookを使うことができます。右上のボタンのNew > Python3をたどると新しいノートを開けます。
また、この記事では適当なランダムで作成したCSVファイル
https://github.com/suzuki-navi/sample-data/blob/master/sample-data-1.csv
を使っています。
データ準備
各種importとデータを読み込みます。
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("sample-data-1.csv", names=["id", "target", "data1", "data2", "data3"])
df
はDataFrameのオブジェクトになります。
CSVからの読み込みとDataFrameの扱いについては前回の記事参照。
DataFrameに対する基本操作を試す - Qiita
ヒストグラム
Matplotlib documentation
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html#matplotlib.pyplot.hist
plt.hist(df["data1"])
bins
というオプションで横軸の分割する数を指定できます。
plt.hist(df["data1"], bins=30)
range
で横軸の範囲を指定できます。
plt.hist(df["data1"], range=(-100, 100))
density=True
を指定すると、縦軸の合計が1.0になるように正規化されます。
散布図
Matplotlib documentation
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html#matplotlib.pyplot.scatter
plt.scatter(df["data1"], df["data2"])
c
に整数の列を指定すると、その値ごとに色分けしてくれるようです。
plt.scatter(df["data1"], df["data2"], c = df["target"])
点がたくさんある場合はalpha
を指定するとよさそうです。0.0
で透明、1.0
が不透明で、その中間を指定すれば濃淡がわかります。
plt.scatter(df["data1"], df["data2"], c = df["target"], alpha=0.5)
xlim
, ylim
というメソッドで横軸の範囲を指定できるようです。
plt.xlim(-50, 50)
plt.ylim(-5, 5)
以上。