<div dir="ltr">Good evening.<div><br></div><div>For some time now I have managed an application which acquires data from bespoke hardware & optionally plots upto seven channels. Matplotlib is embedded within a QT4 application & the "plotting" interface is almost fully for matplotlib.</div><div><br></div><div>I have managed to free up some spare time from my main role & I would like to vastly improve the representation of the data to the users in light of some in-use observation.</div><div><br></div><div>The data is being acquired from a motor-drive & so there is some sinus data ( the motor's currents... 50Hz, 100A peak), data like speed (mostly DC around 3000rpm with some ripple...) and then some digital flag (16bit data...)</div><div><br></div><div>The fixed point data are (luckily) all relatively low in magnitude ... and so plotting a 3000-value and a 100pk value is still visible, be it small amplitude BUT the moment I plot one of the digital flag registers, these dwarf the fixed-point data.</div><div><br></div><div>To help with the I have provided means to "hide" channels but I was wondering if there is any better way?</div><div><br></div><div>I have considered 7 stacked x-y subplots but this will eat into vertical re-estate very quickly.</div><div><br></div><div>I have played with secondary y-axis but this equally ends up taking a lot of horizontal re-estate. </div><div><br></div><div>I have considered plotting the digital registers akin to a digital vector so they are small, heightwise, plots as this will alleviate part of the concerns. </div><div><br></div><div>Any advice with regards to a usable presentation </div><div><br></div><div><br><br></div><div>Example code for multiple y-axis</div><div><br></div><div><div>import matplotlib.pyplot as plt</div><div>from mpl_toolkits.axes_grid1 import host_subplot</div><div>import mpl_toolkits.axisartist as AA</div><div>import numpy as np</div><div><br></div><div>t = np.arange(0,1,0.00001)</div><div>data = [5000*np.sin(t*2*np.pi*10),</div><div>10*np.sin(t*2*np.pi*20),</div><div>20*np.sin(t*2*np.pi*30),</div><div>np.sin(t*2*np.pi*40)+5000,</div><div>np.sin(t*2*np.pi*50)-5000,</div><div>np.sin(t*2*np.pi*60),</div><div>np.sin(t*2*np.pi*70),</div><div>]</div><div><br></div><div>fig = plt.figure()</div><div>host = host_subplot(111, axes_class=AA.Axes)</div><div><br></div><div>axis_list = [None]*7</div><div>for i in range(len(axis_list)):</div><div>    axis_list[i] = host.twinx()</div><div>    new_axis = axis_list[i].get_grid_helper().new_fixed_axis</div><div>    axis_list[i].axis['right'] = new_axis(loc='right',</div><div>                                                axes=axis_list[i],</div><div>                                                offset=(60*i,0))</div><div>    axis_list[i].axis['right'].toggle(all=True)</div><div>    axis_list[i].plot(t,data[i])</div><div><br></div><div>plt.show()</div><div><br></div><div>for i in data:</div><div>    plt.plot(t,i)</div><div>plt.show()</div></div><div><br></div><div><br></div><div>Yours, </div><div><br></div><div>JonRB</div></div>