- Author:
- Alan Garny <agarny@hellix.com>
- Date:
- 2021-06-16 09:49:10+12:00
- Desc:
- Don't require Tkinter.
This is not needed on macOS (and maybe not on Linux either), but is definitely needed on Windows.
- Permanent Source URI:
- https://staging.physiomeproject.org/workspace/648/rawfile/c2034e3322dd75a7a15067f35a300bac08101ab9/Figure2-plot.py
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# read the csv file extracted from sedml file
data = pd.read_csv('Figure2.csv')
# define the x and y axis and match the units
X = data[data.keys()[0]] * 1000
Y1 = data[data.keys()[18]]
Y2 = data[data.keys()[17]] * 1000 / 57
Y3 = data[data.keys()[6]]
Y4 = data[data.keys()[7]] * 1000 / 57
Y5 = data[data.keys()[10]] * 1000 / 57
Y6 = data[data.keys()[5]]
Y7 = data[data.keys()[9]] * 1000 / 57
Y8 = data[data.keys()[11]] * 1000 / 57
Y9 = data[data.keys()[13]] * 1000 / 57
Y10 = data[data.keys()[8]] * 1000 / 57
Y11 = data[data.keys()[3]] * 1000
Y12 = data[data.keys()[14]] * 1000 / 57
Y13 = data[data.keys()[15]] * 1000 / 57
Y14 = data[data.keys()[4]] * 1e6
Y15 = data[data.keys()[12]] * 1000 / 57
Y16 = data[data.keys()[16]] * 1000 / 57
Y17 = data[data.keys()[1]]
Y18 = data[data.keys()[2]]
plt.figure(figsize=(14, 16))
plt.subplot(6, 2, 1)
plt.plot(X, Y1, 'navy', linestyle='-', label='', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.ylim(-70, 30)
plt.yticks(np.arange(-60, 30, 20))
plt.ylabel('V$_m$ (mV)', fontsize=12)
# plt.xlabel ('Time(ms)',fontsize=12)
plt.title('A', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplot(6, 2, 2)
plt.plot(X, Y1, 'navy', linestyle='-', label='', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.ylim(-70, 30)
plt.yticks(np.arange(-60, 30, 20))
plt.ylabel('V$_m$ (mV)', fontsize=12)
plt.grid()
plt.subplot(6, 2, 3)
plt.plot(X, Y2, 'navy', linestyle='-', label='', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.ylim(-8, 3)
plt.yticks(np.arange(-8, 4, 2))
plt.ylabel('I$_{tot}$ (pA/pF)', fontsize=12)
plt.title('B', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplot(6, 2, 4)
plt.plot(X, Y3, 'navy', linestyle='-', label='', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.yticks(np.arange(0, 310, 100))
plt.ylabel('J$_{rel}$ (mM/s)', fontsize=12)
plt.title('G', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplot(6, 2, 5)
plt.plot(X, Y4, 'navy', linestyle='-', label='I$_{CaL}$', linewidth=3)
plt.plot(X, Y5, 'red', linestyle='-', label='I$_{Kr}$', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.ylim(-8, 3)
plt.yticks(np.arange(-8, 3, 2))
plt.ylabel('(pA/pF)', fontsize=12)
plt.title('C', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.legend()
plt.subplot(6, 2, 6)
plt.plot(X, Y6, 'navy', linestyle='-', label='I$_{CaL}$', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.yticks(np.arange(0, 1, 0.2))
plt.ylabel('J$_{up}$ (mM/s)', fontsize=12)
plt.title('H', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplot(6, 2, 7)
plt.plot(X, Y7, 'navy', linestyle='-', label='I$_{f}$', linewidth=3)
plt.plot(X, Y8, 'red', linestyle='-', label='I$_{Ks}$', linewidth=3)
plt.plot(X, Y9, 'green', linestyle='-', label='I$_{Na}$', linewidth=3)
plt.plot(X, Y10, 'purple', linestyle='-', label='I$_{CaT}$', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.ylim(-0.1, 0.051)
plt.yticks(np.arange(-0.1, 0.051, 0.05))
plt.ylabel('(pA/pF)', fontsize=12)
plt.title('D', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.legend()
plt.subplot(6, 2, 8)
plt.plot(X, Y11, 'navy', linestyle='-', label='I$_{CaL}$', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.yticks(np.arange(0, 3.1, 1))
plt.ylabel('Ca$_{sub}$ (\u03BCM)', fontsize=12)
plt.title('I', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplot(6, 2, 9)
plt.plot(X, Y12, 'navy', linestyle='-', label='I$_{NaCa}$', linewidth=3)
plt.plot(X, Y13, 'red', linestyle='-', label='I$_{NaK}$', linewidth=3)
plt.xlim(0, 1600, 1000)
plt.xticks(np.arange(0, 1700, 500))
plt.yticks(np.arange(-2, 1, 0.5))
plt.ylabel('(pA/pF)', fontsize=12)
plt.title('E', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.legend()
plt.subplot(6, 2, 10)
plt.plot(X, Y14, 'navy', linestyle='-', label='I$_{CaL}$', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.yticks(np.arange(50, 250, 50))
plt.ylabel('Ca$_i$ (nM)', fontsize=12)
plt.title('J', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplots_adjust(bottom=0.5, right=0.8, top=1)
plt.subplot(6, 2, 11)
plt.plot(X, Y15, 'navy', linestyle='-', label='$I_{Kur}$', linewidth=3)
plt.plot(X, Y16, 'red', linestyle='-', label='$I_{to}$', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.yticks(np.arange(0, 0.5, 0.1))
plt.ylabel('(pA/pF)', fontsize=12)
plt.xlabel('Time (ms)', fontsize=12)
plt.title('F', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplots_adjust(bottom=0.5, right=0.8, top=1)
plt.legend()
plt.subplot(6, 2, 12)
plt.plot(X, Y17, 'navy', linestyle='-', label='$Ca_{jSR}$', linewidth=3)
plt.plot(X, Y18, 'red', linestyle='-', label='$Ca_{nSR}$', linewidth=3)
plt.xlim(0, 1600)
plt.xticks(np.arange(0, 1600, 500))
plt.yticks(np.arange(0.1, 0.6, 0.1))
plt.ylabel('(mM)', fontsize=12)
plt.xlabel('Time (ms)', fontsize=12)
plt.title('K', loc='left', y=1.05, x=-0.06, fontsize=20)
plt.grid()
plt.subplots_adjust(bottom=0.5, right=0.8, top=1)
plt.legend()
plt.tight_layout(pad=0.5, w_pad=3, h_pad=3)
plt.savefig('Figure2.png')
plt.show()