diff --git a/graf.py b/graf.py index ed9766c..085d669 100755 --- a/graf.py +++ b/graf.py @@ -7,7 +7,25 @@ # Úloha: Program čte textový soubor a vykresluje graf ############################################################################ +def prevedNaCisla(seznamRetezcu): + """ Funkce vezme seznam řetězců, + - nahradí v nich desetiné čárky desesetinými tečkami + - převede řetězce na float + + Vrátí seznam čísel + """ + vysledek=[] + for s in seznamRetezcu: + vysledek.append( float( s.replace(',','.') ) ) + return vysledek + + jmenosouboru='graf.txt' +import os.path +if not os.path.isfile(jmenosouboru): + jmenosouboru=raw_input("Zadej jméno souboru > ") + + hodnotyX=[] hodnotyY=[] # Načtení souboru @@ -20,18 +38,34 @@ # zpracování řádku if radek=='' or '-----' in radek or radek[0]=='#': continue # horizontální čáru nezpracovávám - x,y = radek.split() + x,y = radek.split('|') hodnotyX.append(x) hodnotyY.append(y) +f.close() + # vyndám popisky popisekX= hodnotyX.pop(0) popisekY= hodnotyY.pop(0) -nahradCarky(hodnotyX) -nahradCarky(hodnotyY) +x = prevedNaCisla(hodnotyX) +y = prevedNaCisla(hodnotyY) + + +import pylab as lab +import scipy.interpolate as interpol + +# vytvořím si novou osu X, ktetá bude mí 300 bodů +xx=lab.linspace(min(x),max(x),300) +# funkce pro výpočet nových hodnoty Y +funkceProlozeni=interpol.UnivariateSpline(x,y,s=1,k=2) +# výpočet nových hodnot Y +yy = funkceProlozeni(xx) -import pylab +lab.plot(x,y,'r+') +lab.plot(xx,yy,'-g') +lab.grid(True) +lab.xlabel(popisekX.decode('UTF8')) +lab.ylabel(popisekY.decode('UTF8')) -pylab.plot(hodnotyX,hodnotyY) -pylab.show() +lab.show() diff --git a/graf.txt b/graf.txt index 61b0058..67b586a 100644 --- a/graf.txt +++ b/graf.txt @@ -1,15 +1,15 @@ # toto je graf z 20.2.2014 -U[V] I[mA#] +napětí $U_1[V]$ | $I^2[mA]$ ------------------ -0.2 0,01 -0.4 0,05 -0.5 0.5 -0.6 1 -0.7 2 -0.8 8 -1 15 +0.2 | 0,01 +0.4 | 0,05 +0.5 | 0.5 +0.6 | 1 +0.7 | 2 +0.8 | 8 +1 | 30