Search
class Person: def __init__(self, name, sex): self.name = name self.sex = sex self.children = [] self.parents = [] # parents of this node self.partner = None # partner (=husband/wife of this node) def add_child(self, node): self.children.append(node) def add_parent(self, node): self.parents.append(node) def set_partner(self, node): self.partner = node def __str__(self): s = "Female" if self.sex == 'F' else "Male" return self.name + " " + s
Vstupní soubor family.txt:
M Jana Jan F M P Jana Martin F M P Jana Robert F M P Robert Gabriel M M P Robert Oleg M M P Robert Ondrej M M P Martin Jiri M M P Martin Rudolf M M P Jan Petra M F P Jan Uxana M F P Uxana Klara F F P Uxana Jakub F M P Uxana Adam F M P Petra Alex F M P A C M M P A D M F P D K F F P C J M M P C I M F P C H M M P B E F F P B F F M P B G F F
Schéma rodiny ve family.txt:
import random for i in range(10): print(random.random())
import random for i in range(10): print(random.randint(-10,10))
random.seed( cislo )
plot
Hlavním objektem je plt z modulu matplotlib.pyplot, který poskytuje spoustu metod ke kreslení různých funkcí.
plt
matplotlib.pyplot
import numpy as np import matplotlib.pyplot as plt x = np.arange(0.,10.,0.1) y = np.sin(x) plt.plot(y) plt.show()
Všimněte si, ze výsledný graf je na ose 'x' číslován od 0 do 100, neboť to je velikost pole 'y'. Další možností je na zobrazit funkci sinus společně s osou 'x' definovanou dle pole 'x':
plt.plot(x,y)
A pomocí volání funkcí 'x/ylabel' nastavíme popisky jednotlivých os
plt.xlabel('osa x') plt.ylabel('osa y')
Samostatné úsečky: je třeba zadat pole počátečních x-ových a y-ových souřadnic.
plt.plot([x1,x2],[y1,y2],'k-');
Uložení obrázků do souboru: příkaz: savefig . Pro současné ulozeni obrázků do souboru a zobrazení je třeba volat savefig před příkazem show.
savefig
show
plt.savefig('jmeno.png')
Kreslení histogramu - příkaz hist
import numpy as np import matplotlib.pyplot as plt size = 10000 y = np.random.randn(size) n, bins, patches = plt.hist(y, 50, normed=0, alpha=0.74) plt.savefig('histogram1.png', dpi=600) plt.show()
Poznámka: meze grafu lze určit i ručně příkazem axis
plt.axis([-5,5, 0, 0.5])
zobrazí graf na ose 'x' v rozsahu -5,5 a na ose 'y' v rozsahu 0 až 0.5.
import numpy as np import matplotlib.pyplot as plt def drawBranch(x, y, length, angle): # Konec rekurze if (length < 0.3): return a1 = 0.15 a2 = -0.15 s = 0.7 l2 = s*length x1 = x + l2 * np.cos(angle) y1 = y + l2 * np.sin(angle) plt.plot([x,x1],[y,y1], 'k-') drawBranch(x1, y1, l2, angle+a1) drawBranch(x1, y1, l2, angle+a2) if __name__ == '__main__': drawBranch(5,0,6,1.57) plt.show()