#!/usr/bin/env python3 import pylab as pb import numpy as np import time c = pb.Circle((0.5, 0.5), 1000) # obiekt kółko dla rysowania pb.ion() # włączenie trybu interaktywnego, okienka pojawiają się w locie, istnieją tylko póki program działa - potrzebujemy robić pb.draw() dla odświeżania. teraz nie potrzebujemy pb.show() # żeby pokazać rysunek. Wyjście z trybu interaktywnego: pb.ioff() s0 = np.loadtxt('EKG.txt', delimiter=',') # wczytujemy sygnał i=0 fig = pb.figure(figsize=(10, 10)) # tworzymy kartkę papieru/okienko i+=1 s = s0[0+i:100+i] t = np.linspace(0, len(s)*0.01, len(s)) print(s.shape, t.shape) ax = fig.add_subplot(2, 2, 1) # okienko dzielimy na 2 wiersze i 2 kolumny, dodajemy rysunek (ax) na 1wszej pozycji lines, = ax.plot(t, s, color='r') # na dodanym rysunku rysujemy wykres ax.add_artist(c) # do dodanego rysunku dodajemy "artystę" rysującego stworzone przez nas kółko ax.axvline(0.5) ax2 = fig.add_subplot(2, 2, 3) ax2.scatter(t, 0.5*s, 100) # wykres kropkowy o rozmiarze kropek 100 pixeli. Możemy też podać macierz z rozmiarem pixeli każdej kropki # t, s - macierze o tym samym wymiarze, wskazujące pozycję kolejnych kropek na osi x i y ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_title('asdsadsa') #ax.set_ylim([-2000, 2000]) # ustawienie ręczne limitu osi Y (pokazuje od -2000 do 2000) ax.grid(True) # dodaje siatkę na osie mac = np.random.random((40, 40)) ax3 = fig.add_subplot(2, 2, 2) cax = ax3.imshow(mac, interpolation='nearest', aspect='equal') # interpolation: nearest lub bilinear - zgładzanie obrazka macierzy, aspect equal - rysunek będzie starał się nie spłaszczać macierz, auto - maksymalizuje rozmiar, spłaszczając i wyciągając macierz ax3.set_yticks([0, 39]) ax3.set_yticklabels([0, 1]) ax3.set_xticks([0, 39]) ax3.set_xticklabels([0, 'MAX']) fig.colorbar(cax) # dodaje colorbar na stworzony z obiektu, który ma kolory (cax, zwracany przez imshow) fig.savefig('figura.png', dpi=300) # zapisanie tego co w ten moment jest na figurze do pliku X = np.random.random(10000) ax4 = fig.add_subplot(2, 2, 4) ax4.hist(X, normed=True) # histogram, podajemy jakiś ciąg liczb pb.draw() time.sleep(0.1) # animacja while True: i+=1 s = s0[0+i:100+i] lines.set_ydata(s) # zmieniamy wartości y dla już narysowanych linii pb.draw() print(c.center) c.center = (c.center[0], c.center[1]+100) # zmieniamy pozycję centrum kółka, które rysuje "artysta" time.sleep(0.1) # czyszczenie figury fig.clear() #pb.show()