# 数値演算、描画用ライブラリ読み込み
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# グラフをinline表示可能にする
%matplotlib inline
# 解像度を上げてinline表示する
%config InlineBackend.figure_format = 'retina'
# 日本語表示用ライブラリ(matplotlibで日本語を使用したい場合)
import japanize_matplotlib
# Excelファイルを読み込む
df = pd.read_excel('dsa_data1.xlsx', sheet_name ='dsa_01', skiprows = 0)
df
id | category | data1 | data2 | data3 | data_a | data_b | |
---|---|---|---|---|---|---|---|
0 | 1 | 0 | A | 45 | 23 | 23 | 58 |
1 | 2 | 2 | C | 94 | 30 | 18 | 70 |
2 | 3 | 2 | B | 53 | 19 | 10 | 70 |
3 | 4 | 2 | A | 88 | 27 | 27 | 46 |
4 | 5 | 0 | B | 57 | 22 | 14 | 40 |
5 | 6 | 0 | A | 79 | 15 | 8 | 58 |
6 | 7 | 1 | A | 53 | 17 | 20 | 40 |
7 | 8 | 1 | C | 69 | 17 | 30 | 50 |
8 | 9 | 2 | A | 80 | 20 | 22 | 42 |
9 | 10 | 0 | B | 66 | 25 | 4 | 38 |
# グラフタイトル
plt.title('散布図の作成例', fontsize=22)
plt.xlabel('x軸 (単位)', fontsize=18)
plt.ylabel('y軸 (単位)', fontsize=18)
# Pandasのデータをnumpy形式に変換
x1 = df['data2'].to_numpy()
y1 = df['data3'].to_numpy()
plt.xlim(0, 100)
plt.ylim(0, 40)
plt.grid()
plt.scatter(x1, y1, s=500, c='m', alpha=1, marker='*');
mycolor=['c']*10
mycolor=['c', 'c', 'c', 'm', 'c', 'c', 'g', 'c', 'c', 'c']
# グラフサイズ
plt.figure(figsize=(5,5))
# グラフタイトル
plt.title('散布図の作成例', fontsize=22)
plt.xlabel('x軸 (単位)', fontsize=18)
plt.ylabel('y軸 (単位)', fontsize=18)
# Pandasのデータをnumpy形式に変換
x1 = df['data2'].to_numpy()
y1 = df['data3'].to_numpy()
plt.xlim(0, 100)
plt.ylim(0, 40)
# 目盛の数字のサイズ
plt.tick_params(labelsize=12)
# 描画順の指定: zorder
plt.grid(zorder=1)
#plt.scatter(x1, y1, s=500, c='m', alpha=1, marker='*', zorder=2);
plt.scatter(x1, y1, s=500, c=mycolor, alpha=0.6, marker='$\clubsuit$', zorder=2);
# z軸データの作成
z = np.array([3,6,12,8,6,4,23,2,4,9])*50
# グラフサイズ
plt.figure(figsize=(5,5))
# グラフタイトル
plt.title('z軸情報:marker size', fontsize=22)
plt.xlabel('x軸 (単位)', fontsize=18)
plt.ylabel('y軸 (単位)', fontsize=18)
# Pandasのデータをnumpy形式に変換
x1 = df['data2'].to_numpy()
y1 = df['data3'].to_numpy()
plt.xlim(0, 100)
plt.ylim(0, 40)
# 目盛の数字のサイズ
plt.tick_params(labelsize=12)
# 描画順の指定: zorder
plt.grid(zorder=1)
#plt.scatter(x1, y1, s=500, c='m', alpha=1, marker='*', zorder=2);
plt.scatter(x1, y1, s=z, c='g', alpha=0.6, marker='$\clubsuit$', zorder=2);
# z軸データの作成
z = np.array([3,6,12,8,6,4,13,2,4,9])
# グラフサイズ
plt.figure(figsize=(5,5))
# グラフタイトル
plt.title('散布図の作成例', fontsize=22)
plt.xlabel('x軸 (単位)', fontsize=18)
plt.ylabel('y軸 (単位)', fontsize=18)
# Pandasのデータをnumpy形式に変換
x1 = df['data2'].to_numpy()
y1 = df['data3'].to_numpy()
plt.xlim(0, 100)
plt.ylim(0, 40)
# 目盛の数字のサイズ
plt.tick_params(labelsize=12)
# 描画順の指定: zorder
plt.grid(zorder=1)
#plt.scatter(x1, y1, s=500, c='m', alpha=1, marker='*', zorder=2);
plt.scatter(x1, y1, s=200, c=z, marker='s', zorder=2, cmap='Greens')
# color barの追加
plt.colorbar();
len(x1)
z = [3,6,12,8,6,4,23,2,4,9]
len(z)
10
# グラフサイズ
plt.figure(figsize=(5,5))
# グラフタイトル
plt.title('散布図の作成例', fontsize=22)
plt.xlabel('x軸 (単位)', fontsize=18)
plt.ylabel('y軸 (単位)', fontsize=18)
# Pandasのデータをnumpy形式に変換
x1 = df['data2'].to_numpy()
y1 = df['data3'].to_numpy()
plt.xlim(0, 100)
plt.ylim(0, 40)
# 目盛の数字のサイズ
plt.tick_params(labelsize=12)
# 描画順の指定: zorder
plt.grid(zorder=1)
#plt.scatter(x1, y1, s=500, c='m', alpha=1, marker='*', zorder=2);
plt.scatter(x1, y1, s=500, c='g', alpha=0.6, marker='$\clubsuit$', zorder=2);
# グラフの保存
plt.savefig('test2.png', bbox_inches='tight', dpi=360, transparent=True);
■ 参考サイト(old versionと表示されるが、こちらの方が見やすい)
目盛の向き(内側、外側、両側)
plt.rc('xtick', color='k', direction='in') # direction: in, out, inout
plt.rc('ytick', color='k', direction='in')
軸目盛・ラベルを非表示にする
plt.xticks([])
軸ラベルを非表示にする
plt.tick_params(labelbottom=False, labelleft=False, labelright=False, labeltop=False)
軸目盛を非表示にする
plt.tick_params(bottom=False, left=False, right=False, top=False)
任意位置の目盛を表示
plt.xticks([3,6,9])
任意位置の目盛ラベルを変更
plt.xticks([1,2,3,4,5], ('Tom', 'Dick', 'Harry', 'Sally', 'Sue'))
初期設定に戻す
plt.rcdefaults()
枠と目盛を消去
plt.axis("off")
目盛の向き(内側、外側、両側)
plt.rc('xtick', color='k', direction='in') # direction: in, out, inout
plt.rc('ytick', color='k', direction='in')
軸目盛・ラベルを非表示にする
plt.xticks([])
軸ラベルを非表示にする
plt.tick_params(labelbottom=False, labelleft=False, labelright=False, labeltop=False)
軸目盛を非表示にする
plt.tick_params(bottom=False, left=False, right=False, top=False)
任意位置の目盛を表示
plt.xticks([3,6,9])
任意位置の目盛ラベルを変更
plt.xticks([1,2,3,4,5], ('Tom', 'Dick', 'Harry', 'Sally', 'Sue'))
初期設定に戻す
plt.rcdefaults()
枠と目盛を消去
plt.axis("off")
[k*2 for k in range(10)]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[k for k in range(10) if k % 2 ==0]
[0, 2, 4, 6, 8]
['c' for k in range(10)]
['c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
['c' for k in x1]
['c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c']
x1
array([45, 94, 53, 88, 57, 79, 53, 69, 80, 66], dtype=int64)
mycolor = ['c' if x >= 60 else 'r' for x in x1]
mycolor
['r', 'c', 'r', 'c', 'r', 'c', 'r', 'c', 'c', 'c']