『MyPlot』をGoogle Colaboratoryで動かしてみる
野暮ったいグラフができる…
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
values1 = [1, 3, 4, 8, 1, 5, 2, 2, 8, 5] # 実験データ1
values2 = [5, 2, 5, 1, 2, 4, 2, 1, 3, 4] # 実験データ2
# データフレーム生成
df = pd.DataFrame({'values1': values1, 'values2': values2})
# グラフ化
df.plot()
from matplotlib.ticker import MultipleLocator
# 1. 色を原色のRGBとは違ういい感じの赤青緑に
from cycler import cycler
c = plt.get_cmap('Set1').colors
plt.rcParams['axes.prop_cycle'] = cycler(color = c)
fig, ax = plt.subplots(figsize = (7, 5))
# 2. 凡例を消す
# 3. 線幅を太くする
df.plot(ax = ax, linewidth = 3, legend = False)
# 4. y軸ラベルを表示
# 5. x軸y軸の表示範囲を変更
x_min, x_max = 0, 9
y_min, y_max = 0, 10
ax.set(ylim = (y_min, y_max), xlim = (x_min, x_max + 0.03))
# 6. 文字サイズまとめて指定
plt.rcParams["font.size"] = 16
# 7. グラフのタイトル、X 軸、Y 軸の名前 (ラベル)、グリッド線を表示
plt.title("”Value2” keeps a low level (below 6) !!")
plt.xlabel("Time[ms]")
plt.ylabel("Volt[mV]")
plt.grid(True)
# 8. 右と上の枠を消す
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# 9. 通常の凡例の代わりにプロットの右側にindexを表示
for i, name in enumerate(df.columns.values):
ax.text(x_max + 0.03, ax.lines[i].get_data()[1][-1], name, color = f'C{i}', va = 'center')
見るポイントがひと目で分かるようにする。
from matplotlib.ticker import MultipleLocator
# 1. 色を原色のRGBとは違ういい感じの赤青緑に
from cycler import cycler
c = plt.get_cmap('Set1').colors
plt.rcParams['axes.prop_cycle'] = cycler(color = c)
fig, ax = plt.subplots(figsize = (7, 5))
# 2. 凡例を消す
# 3. 線幅を太くする
df.plot(ax = ax, linewidth = 3, legend = False)
# 4. y軸ラベルを表示
# 5. x軸y軸の表示範囲を変更
x_min, x_max = 0, 9
y_min, y_max = 0, 10
ax.set(ylim = (y_min, y_max), xlim = (x_min, x_max + 0.03))
# 6. 文字サイズまとめて指定
plt.rcParams["font.size"] = 16
# 7. グラフのタイトル、X 軸、Y 軸の名前 (ラベル)、グリッド線を表示
plt.xlabel("Time[ms]")
plt.ylabel("Volt[mV]")
plt.grid(True)
# 8. 右と上の枠を消す
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# 9. 通常の凡例の代わりにプロットの右側にindexを表示
for i, name in enumerate(df.columns.values):
ax.text(x_max + 0.03, ax.lines[i].get_data()[1][-1], name, color = f'C{i}', va = 'center')
# 10. 閾値の線を追加
th = 6
# plt.hlines(th, x_min, x_max + 0.1, "Magenta", linestyle = "--", lw = 1.5)
plt.hlines(th, x_min, x_max + 0.1, "Orange", linestyle = "--", lw = 3)
# 11. 矢印と吹き出し追加
from matplotlib.patches import Ellipse
el = Ellipse((2, -1), 0.5, 0.5)
# 3msの矢印
ps_x1, ps_y1 = 50, 40
pf_x1, pf_y1 = 3, 8
ax.annotate('Over 6',
xy = (pf_x1, pf_y1), xycoords = 'data',
xytext = (ps_x1, ps_y1), textcoords = 'offset points',
size = 20,
# bbox=dict(boxstyle="round", fc="6"),
arrowprops = dict(arrowstyle = "fancy",
fc = "0.6", ec = "none",
patchB = el,
connectionstyle = "angle3, angleA = 0, angleB = -90"))
# 8msの矢印
ps_x2, ps_y2 = 50, 40
pf_x2, pf_y2 = 8, 8
ax.annotate('Over 6',
xy = (pf_x2, pf_y2), xycoords = 'data',
xytext = (ps_x2, ps_y2), textcoords = 'offset points',
size = 20,
# bbox=dict(boxstyle="round", fc="6"),
arrowprops = dict(arrowstyle = "fancy",
fc = "0.6", ec = "none",
patchB = el,
connectionstyle = "angle3, angleA = 0, angleB = -90"))
# 12. 吹き出し
ann = ax.annotate('”Value2” keeps a low level !! \n (below 6) ',
xy = (9, 3.7), xycoords = 'data',
xytext = (0, -60), textcoords = 'offset points',
size = 20,
bbox = dict(boxstyle = "round",
fc = (1.0, 0.7, 0.7),
ec = (1.0, 0.5, 0.5)),
arrowprops = dict(arrowstyle = "wedge, tail_width = 1.",
fc = (1.0, 0.7, 0.7), ec = (1.0, 0.5, 0.5),
patchA = None,
patchB = el,
relpos = (0.2, 0.8),
connectionstyle = "arc3, rad = -0.1"))
イイ感じ!『MyPlot』をGoogle Colaboratoryから動かせました!