ich würde gerne mehrere Slider in meine Plot einbauen, sodass ich die x-Achse verkleinern/vergrößern kann und auch zwischen Teilabschnitten in Datensätzen wechseln kann.
Erste Hilfe fand ich hier : http://matplotlib.org/examples/widgets/slider_demo.html
Allerdings scheitert es am meinem Verständnis es auf meinen Code umzubauen.
Mein Plot wird hier erstellt:
Code: Alles auswählen
####### Hier hole ich aus einem Datensatz Blöcke mit je 8192 Werten raus
def _test1(kanal,block):
block = block -1
kanal = kanal-1
s = 8192*kanal+(block*4*8192)
e = 8192*kanal+8192+(block*4*8192)
return b1[s:e]
#### Zeitachse, Umrechnen in us
for i in range(0,8192):
d = 0.05*i
time.append(round(d, 2))
#####
##########################################Kanal und Block zum Plotten bestimmen, und Abschnitt auf x-Achse wählen
Plot_Eins = _test1(1,1)
Plot_Zwei = _test1(1,2)
Plot_Drei = _test1(1,3)
startzeit = 0 ## in us
endzeit = 400 ## in us
#######################################################################
#### Plotten
f, (ax1, ax2, ax3, ax4) = plt.subplots(4, sharex=True, sharey=True)
ax1.set_title('Vergleich')
ax1.plot(time, Plot_Eins, color = "r", label = testname1+ ": Amplitude = "+str(_amplitude(Plot_Eins))+"mV")
ax1.set_ylabel('mV')
ax1.legend(bbox_to_anchor=(0.4, 1), loc=2, borderaxespad=0.)
ax2.plot(time, Plot_Zwei, color = "b", label = testname2+ ": Amplitude = "+str(_amplitude(Plot_Zwei))+"mV")
ax2.set_ylabel('mV')
ax2.legend(bbox_to_anchor=(0.4, 1), loc=2, borderaxespad=0.)
ax3.plot(time, Plot_Drei, color = "g", label = testname3+ ": Amplitude = "+str(_amplitude(Plot_Drei))+"mV")
ax3.legend(bbox_to_anchor=(0.4, 1), loc=2, borderaxespad=0.)
ax3.set_ylabel('mV')
ax4.plot(time, Plot_Eins, color = "r")
ax4.plot(time, Plot_Zwei, color = "b")
ax4.plot(time, Plot_Drei, color = "g")
ax4.set_ylabel('mV')
##x-Achsenlimits festlegen
if (endzeit-startzeit <= 10):
set_ticks = 1
elif (endzeit-startzeit <= 50):
set_ticks = 5
elif (endzeit-startzeit <= 100):
set_ticks = 10
else:
set_ticks = 20
plt.xlim([startzeit, endzeit])
xticks = np.arange(startzeit, endzeit+set_ticks, set_ticks)
plt.xticks(xticks)
plt.xlabel('Zeit in us')
Code: Alles auswählen
def update(val):
amp = samp.val
freq = sfreq.val
l.set_ydata(amp*np.sin(2*np.pi*freq*t)) ###set_ydata ???
fig.canvas.draw_idle() ###canvas.draw ??? brauch ich das?
sfreq.on_changed(update)
samp.on_changed(update)
Kann jemand helfen?