Newer
Older
import matplotlib.pyplot as plt
import numpy as np
def plot_fulldata(fulldata, axes=None, fig=None, save=False, output="fulldata.png", show=False, realtime=False,
xlim=None, plot_ads=False):
if axes is None:
fig, (ax1,ax2) = plt.subplots(2, sharex=True)
else:
(ax1,ax2) = axes
line1, = ax1.plot(fulldata[:, 2], fulldata[:, 0], 'r.-', label='current [mA]')
ax1.set_ylabel('Current (mA)')
ax1.set_title('Current')
line2, = ax2.plot(fulldata[:, 2], fulldata[:, 1], '.-', label='Voltage [mV]',alpha=.5)
ax2.set_xlabel('Time (s)')
ax2.set_ylabel('Voltage (mV)')
ax2.set_title('Voltage')
if xlim is not None:
ax1.set_xlim(xlim)
ax2.set_xlim(xlim)
if save:
fig.savefig(output,dpi=300,bbox_inches='tight')
if show:
plt.show()
if realtime:
fig.canvas.draw()
fig.canvas.flush_events()
return fig, (ax1,ax2), (line1,line2)
else:
return fig, (ax1, ax2)
def update_realtime_fulldata_plot(last_measurement, acquired_dataset, lines, axes, fig, x_window=10, plot_ads=False):
(line1, line2) = lines
(ax1,ax2) = axes
t = np.append(acquired_dataset[:,2], last_measurement[:, 2][~np.isnan(last_measurement[:, 2])] + acquired_dataset[:,2][-1])
i_rt = np.append(acquired_dataset[:,0], last_measurement[:, 0][~np.isnan(last_measurement[:, 2])])
u_rt = np.append(acquired_dataset[:,1], last_measurement[:, 1][~np.isnan(last_measurement[:, 2])])
line1.set_ydata(i_rt)
line1.set_xdata(t)
line2.set_ydata(u_rt)
line2.set_xdata(t)
ax1.relim()
ax2.relim()
ax1.autoscale_view(scalex=False)
ax2.autoscale_view(scalex=False)
ax1.set_xlim([t[-1] - x_window, t[-1]])
ax2.set_xlim([t[-1] - x_window, t[-1]])
fig.canvas.draw()
fig.canvas.flush_events()
return fig,(ax1,ax2), (line1,line2), np.array([i_rt,u_rt,t]).T