matplotlib グラフ内に凡例(legend)を表示させたい
心拍数と、湿度をセンサーで取得し関係をmatplotlibで表示させています。
下記の図のように
グラフの画像内の右上に 赤○ ang
青○ relax
というように表示させたいです。
プログラムを書いてみたのですが右上に小さな箱しか出てきません。
解決方法を教えてくだされば幸いです。
ソースです
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from matplotlib.colors import ListedColormap
colors = ['red','blue']
cmap = ListedColormap(colors)
from sklearn import datasets
from sklearn.cluster import KMeans
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def main():
# クラスタ数
N_CLUSTERS = 2
# Blob データを生成する
##dataset = datasets.make_blobs(centers=N_CLUSTERS)
# 正解ラベルは使わない
# targets = dataset[1]
#csv read
data = pd.read_csv('heartRate1.csv',names=('heart','hum'))
#yokoziku sinpaku
#tateziku situdo(hum)
#del(data['cute'])
#del(data['ang'])
#data_array = data.as_matrix().T
data_array = np.array([data['heart'].tolist(),
data['hum'].tolist()], np.float32)
# 特徴データ
features = data_array.T
# クラスタリングする
cls = KMeans(n_clusters=N_CLUSTERS)
pred = cls.fit_predict(features)
# 各要素をラベルごとに色付けして表示する
#ave=np.average(y)
ax=plt.subplot()
##for i in range(N_CLUSTERS):
## labels = features[pred == i]
plt.scatter(features[:, 0], features[:, 1], c=pred, cmap=cmap)
plt.plot(label="ang")
plt.plot(label="relax")
plt.legend()
# クラスタのセントロイド (重心) を描く
centers = cls.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], s=100,
facecolors='none', edgecolors='black')
# ax.set_ylim([ave*50,ave*80]
##fig, axes = plt.figure()
##plot1 = fig.add_subplot(221)
plt.title("clustering")
ax.set_xlabel('heartrate[-]')
ax.set_ylabel('humidity[%]')
plt.show()
if __name__ == '__main__':
main()