yana_lab

Pythonグラフ

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

Pythonグラフの作り方

ここでは,主にNIRSによる脳活動計測実験を対象に実験データのグラフ化についてまとめる.

1.グラフの書き方の基本

import numpy as np
import matplotlib.pyplot as plt
 
data = np.loadtxt("data.csv", delimiter=',')
timedata = data[:,0]#時間データ
oxydata = data[:,1]#oxyのデータ

plt.plot(timedata,oxydata)
plt.show()
 

2.軸や線の色を調整する

import numpy as np
import matplotlib.pyplot as plt
 
data = np.loadtxt("data.csv", delimiter=',')
timedata = data[:,0]#時間データ
oxydata = data[:,1]#oxyのデータ

plt.plot(timedata,oxydata, color="red")#線を赤色にする
plt.xlim(0, 360)#X軸の範囲を指定
plt.ylim(-0.03, 0.03)#Y軸の範囲を指定
plt.title("oxy-Hb 1ch")#グラフのタイトル
plt.xlabel("Time [s]")
plt.ylabel("Hb conc. [mM cm]")
plt.show()
 

3.タスクの部分を塗りつぶす

import numpy as np
import matplotlib.pyplot as plt
 
data = np.loadtxt("data.csv", delimiter=',')
timedata = data[:,0]#時間データ
oxydata = data[:,1]#oxyのデータ

plt.plot(timedata,oxydata, color="red")
plt.xlim(0, 360)#X軸の範囲を指定
plt.ylim(-0.03, 0.03)#Y軸の範囲を指定
plt.title("oxy-Hb 1ch")#グラフのタイトル
plt.xlabel("Time [s]")
plt.ylabel("Hb conc. [mM cm]")
 
plt.axvspan(15, 45, facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.axvspan(75, 105, facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.axvspan(135, 165, facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.axvspan(195, 225, facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.axvspan(255, 285, facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.axvspan(315, 345, facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.show()
 

もう少しスマートに書くなら
import numpy as np
import matplotlib.pyplot as plt
 
data = np.loadtxt("data.csv", delimiter=',')
timedata = data[:,0]#時間データ
oxydata = data[:,1]#oxyのデータ

plt.plot(timedata,oxydata, color="red")
plt.xlim(0, 360)#X軸の範囲を指定
plt.ylim(-0.03, 0.03)#Y軸の範囲を指定
plt.title("oxy-Hb 1ch")#グラフのタイトル
plt.xlabel("Time [s]")
plt.ylabel("Hb conc. [mM cm]")
 
start_task = [15, 75, 135, 195, 255, 315]
end_task = [45, 105, 165, 225, 285, 345]
for n in range(0,6):
    plt.axvspan(start_task[n], end_task[n], facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.show()
 

4.複数の線を描画する

import numpy as np
import matplotlib.pyplot as plt
 
data = np.loadtxt("data.csv", delimiter=',')
timedata = data[:,0]#時間データ
oxydata = data[:,1]#oxyのデータ
deoxydata = data[:,2]#deoxyのデータ
totaldata = data[:,3]#totalのデータ

plt.plot(timedata, oxydata, color="red")
plt.plot(timedata, deoxydata, color="blue")
plt.plot(timedata, totaldata, color="green")
plt.xlim(0, 360)#X軸の範囲を指定
plt.ylim(-0.04, 0.06)#Y軸の範囲を指定
plt.title("1ch")#グラフのタイトル
plt.xlabel("Time [s]")
plt.ylabel("Hb conc. [mM cm]")
plt.legend(["oxy-Hb","deoxy-Hb","total-Hb"])
 
start_task = [15, 75, 135, 195, 255, 315]
end_task = [45, 105, 165, 225, 285, 345]
for n in range(0,6):
    plt.axvspan(start_task[n], end_task[n], facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)
plt.show()
 

グラフを保存する場合は以下のようにする
import numpy as np
import matplotlib.pyplot as plt
 
data = np.loadtxt("data.csv", delimiter=',')
timedata = data[:,0]#時間データ
oxydata = data[:,1]#oxyのデータ
deoxydata = data[:,2]#deoxyのデータ
totaldata = data[:,3]#totalのデータ

plt.plot(timedata, oxydata, color="red")
plt.plot(timedata, deoxydata, color="blue")
plt.plot(timedata, totaldata, color="green")
 
plt.xlim(0, 360)#X軸の範囲を指定
plt.ylim(-0.04, 0.06)#Y軸の範囲を指定
plt.title("1ch")#グラフのタイトル
plt.xlabel("Time [s]")
plt.ylabel("Hb conc. [mM cm]")
plt.legend(["oxy-Hb","deoxy-Hb","total-Hb"])
 
start_task = [15, 75, 135, 195, 255, 315]
end_task = [45, 105, 165, 225, 285, 345]
for n in range(0,6):
    plt.axvspan(start_task[n], end_task[n], facecolor='y', alpha=0.5)#(最初の値,最後の値,facecolor=色,alpha=透明度)

plt.savefig("Plot 1ch.eps")#拡張子は emf, eps, jpeg, jpg, pdf, png, ps, raw, rgba, svg, svgz, tif, tiffが選択可能.
 

5.位相平面の書き方

5.1基本の書き方

import numpy as np
import matplotlib.pyplot as plt
 
oxy = [1,-2, 3, -4 ,3, 0]#oxyの平均値データ
d_oxy = [0.3, -0.3, 0.4, -0.2, 0.2, -0.1] #微分値の平均値データ

plt.plot(oxy, d_oxy, "o",color='y', markersize=10)
plt.xlim(-5, 5)#X軸の範囲を指定
plt.ylim(-0.5, 0.5)#Y軸の範囲を指定
plt.title("1ch phase plane")#グラフのタイトル
plt.xlabel("oxy-Hb")
plt.ylabel("d(oxy-Hn)./dt")
plt.show()
 

5.2 TaskとRestで色を変える

import numpy as np
import matplotlib.pyplot as plt
 
oxy = [1,-2, 3, -4 ,3, 0]#oxyの平均値データ
d_oxy = [0.3, -0.3, 0.4, -0.2, 0.2, -0.1] #微分値の平均値データ

plt.plot(oxy[0], d_oxy[0], "o", color='y', markersize=10)
plt.plot(oxy[1], d_oxy[1], "o", color='c', markersize=10)
plt.plot(oxy[2], d_oxy[2], "o", color='y', markersize=10)
plt.plot(oxy[3], d_oxy[3], "o", color='c', markersize=10)
plt.plot(oxy[4], d_oxy[4], "o", color='y', markersize=10)
plt.plot(oxy[5], d_oxy[5], "o", color='c', markersize=10)
 
plt.xlim(-5, 5)#X軸の範囲を指定
plt.ylim(-0.5, 0.5)#Y軸の範囲を指定
plt.title("1ch phase plane")#グラフのタイトル
plt.xlabel("oxy-Hb")
plt.ylabel("d(oxy-Hn)./dt")
plt.legend(["Task","Rest"])
plt.show()
 

5.3何試行目の平均点なのかわかるようにする

import numpy as np
import matplotlib.pyplot as plt
 
oxy = [1,-2, 3, -4 ,3, 0]#oxyの平均値データ
d_oxy = [0.3, -0.3, 0.4, -0.2, 0.2, -0.1] #微分値の平均値データ

plt.plot(oxy[0], d_oxy[0], "o",color='y', markersize=20, marker='$T1$')
plt.plot(oxy[1], d_oxy[1], "o",color='c', markersize=20, marker='$R1$')
plt.plot(oxy[2], d_oxy[2], "o",color='y', markersize=20, marker='$T2$')
plt.plot(oxy[3], d_oxy[3], "o",color='c', markersize=20, marker='$R2$')
plt.plot(oxy[4], d_oxy[4], "o",color='y', markersize=20, marker='$T3$')
plt.plot(oxy[5], d_oxy[5], "o",color='c', markersize=20, marker='$R3$')
 
plt.xlim(-5, 5)#X軸の範囲を指定
plt.ylim(-0.5, 0.5)#Y軸の範囲を指定
plt.title("1ch phase plane")#グラフのタイトル
plt.xlabel("oxy-Hb")
plt.ylabel("d(oxy-Hn)./dt")
plt.savefig("test") #保存する
plt.show()
 

タグ:

Python Matplotlib
+ タグ編集
  • タグ:
  • Python
  • Matplotlib
ウィキ募集バナー