In an earlier post the real-time plotting capabilities were demonstrated, we're extending on this by showing how to generate multiple plots simultaneously. A couple noteworthy observations, in the past post the X and Y scaling was automatically scaled after each element addition. While you can still do this, typically for multiplots we would prefer maintaining a shared X range. While somewhat unnecessary, I've elected to maintain a uniform Y range.
#!/usr/bin/python
from pylab import *;
import time;
def log(M):
print "__(log) " + M;
def test02():
plt.ion();
fig=plt.figure(1);
ax1=fig.add_subplot(311);
ax2=fig.add_subplot(312);
ax3=fig.add_subplot(313);
l1,=ax1.plot(100,100,'r-');
l2,=ax2.plot(100,100,'r-');
l3,=ax3.plot(100,100,'r-');
time.sleep(3);
D=[];
i=0.0;
while (i < 50.0):
D.append((i,sin(i),cos(i),cos(i*2)));
T1=[x[0] for x in D];
L1=[x[1] for x in D];
L2=[x[2] for x in D];
L3=[x[3] for x in D];
l1.set_xdata(T1);
l1.set_ydata(L1);
l2.set_xdata(T1);
l2.set_ydata(L2);
l3.set_xdata(T1);
l3.set_ydata(L3);
ax1.set_xlim([0,50]);
ax2.set_xlim([0,50]);
ax3.set_xlim([0,50]);
ax1.set_ylim([-1.5,1.5]);
ax2.set_ylim([-1.5,1.5]);
ax3.set_ylim([-1.5,1.5]);
plt.draw();
i+=0.10;
show(block=True);
#---main---
log("main process initializing");
test02();
log("main process terminating");
Easy Peasy;
No comments:
Post a Comment