Matplotlibを使ったグラフ描画入門 with Pandas

<目次>


共通した流れ


今回の目的


データの事前準備

# 適当な作業用ディレクトリに移動してから、iris.dataをダウンロード。
curl https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data -o iris.data
 
# データの中身を扱いやすいように修正。
# 文字列で書かれている分類名を0,1,2に置換。
cat iris.data | sed -e 's/Iris-setosa/0/g' | sed -e 's/Iris-versicolor/1/g' | sed -e 's/Iris-virginica/2/g' > iris2.data

具体例: 2次元空間に散布図を描く

### 具体例: 散布図を描く(2次元)
# 慣例としてpd, pltというエイリアスを付けることが多い。
import pandas as pd
import matplotlib.pyplot as plt
 
# データセットの読み込み
filename = 'iris2.data'
df = pd.read_csv(filename, header=None)
 
# sepal length(1番目の数値)をx座標として準備。
# petal length(3番目の数値)をy座標として準備。
x = df[0]
y = df[2]
labels = df[4]
 
# 散布図描画
plt.scatter(x, y, c=labels) #実際に描画データを指定している箇所
plt.xlabel('sepal length') #x軸の説明
plt.ylabel('petal length') #y軸の説明
plt.show()

具体例: 3次元空間に散布図を描く

### 具体例: 3次元空間に散布図を描く
# sepal width(2番目)をx座標,
# petal length(3番目)をy座標,
# petal width(4番目)をz座標として準備。
x = df[1]
y = df[2]
z = df[3]
labels = df[4]
 
# 散布図描画
# 3次元描画の場合はもう一つモジュールを読み込む。
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x, y, z, c=labels)
ax.set_xlabel('sepal width')
ax.set_ylabel('petal length')
ax.set_zlabel('petal width')
plt.show()

グラフを保存する

### 具体例: 2次元空間に散布図を書き、保存する。
import pandas as pd
import matplotlib.pyplot as plt
 
filename = 'iris2.data'
df = pd.read_csv(filename, header=None)
x = df[0]
y = df[2]
labels = df[4]
 
# 散布図描画
plt.scatter(x, y, c=labels)
plt.xlabel('sepal length')
plt.ylabel('petal length')
 
# plt.show()の代わりに、plt.savefig()を使う。
plt.savefig('graph.pdf')

参考サイト