Pylab, plotten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
basti!
User
Beiträge: 13
Registriert: Donnerstag 15. April 2010, 18:04

Hey,
ich bin neu hier und auch in python ein Neuling.Ich muss für die Schule ein Programm schreiben mit dem ich so meine Probleme habe.Aus der Strahlenformel von Max Planck sollen unter verschiedenen Temperaturen die einzelnen Graphen dargestellt werden. Ich habe mich an dem Programm schon lange versucht doch es klappt einfach nicht. Kann mir jemand sagen wo dass Problem liegt? Er stellt mir meine Graphen nicht da, warum?

Danke schon mal im vorraus,
hier mein Programm



import numpy as np
import pylab as plt
from math import e
from matplotlib.pyplot import legend, xlim, ylim

lam = np.linspace (0,10*e-6,10000)

def lamda(x,T):
-->lam = np.linspace (0,10*e-6,10000)
-->c1=0.374e-15
-->c2=1.439e-2
-->return ((c1/(x**5))*(1/(np.exp(c2/x*T))-1))



for t in (300,400,600,800,1000):
-->plt.plot(lam*1e6, lamda(lam,t))




legend()

xlim(0, 10)
ylim(0, 14000)

plt.xlabel('Wellenlaenge(muekrometer)')
plt.ylabel('Spektrale Energieflussdichte(W/m^2muekrometer)')
plt.title('Planck')


plt.show()
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Schau dir noch einmal die Argumente von "plot" an. Die Funktion ertwartet als Parameter eine Liste von x-Koordinaten und eine Liste von y-Koordinaten.

Es heißt übrigens lambda und nicht lamda.

Und editiere deinen Code doch noch einmal und setze Code-Tags. Dann sparst du dir auch deine seltsamen Einrückungspfeile ;-) Über die Qualität des Codes sag ich mal nichts.

Sebastian
Zuletzt geändert von EyDu am Donnerstag 15. April 2010, 18:16, insgesamt 1-mal geändert.
Das Leben ist wie ein Tennisball.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Hallo und Willkommen,

es gibt Codetags, die du verwenden solltest.

Beim Überfliegen ist mir aufgefallen, dass du lambda verwenden willst, was ein keyword in Python ist und daher so nicht als name verwendet werden kann. lamda ist dann nicht besser, sondern lambda_
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
basti!
User
Beiträge: 13
Registriert: Donnerstag 15. April 2010, 18:04

danke für eure schnellen Antworten. Das mit lamda werde ich sofort ändern.
Doch was meint ihr mit code-tags?? Könnt ihr mir nicht präzise tipps geben??
Wäre echt nett. Ich steh ziemlich auf dem schlauch und komm nicht weiter.
danke
basti!
User
Beiträge: 13
Registriert: Donnerstag 15. April 2010, 18:04

lambda :D sorry
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

das hier: [ code=python ] [/code]

Es gibt einen Button, auf dem Python steht. Der macht das für dich ;)
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
basti!
User
Beiträge: 13
Registriert: Donnerstag 15. April 2010, 18:04

ich arbeite mit Spyder(pylab).
So einen button kann ich nicht sehen

Aber das kann doch nicht das Problem sein, wegen dem mein Programm nicht läuft oder?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code-Tags hier im Forum, damit man deinen Code lesen kann.
Das Leben ist wie ein Tennisball.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

- Weniger als 10.000 Datenpunkte in ``linspace`` reichen auch. Und verwende nicht 10*e-4, sondern 10e-4.
- Schreibe die Planck-Formel am besten mit lambda und verwende weniger Klammern. Die Formel ist bei dir übrigens falsch:

Code: Alles auswählen

B = lambda x,T: 0.37e-15/x**5 / ... 
- Matplotlib unterstüzt Latex. Anstelle von 'muekrometer' schreibe bitte r'$\mu$.
- Die siehst vermutlich nichts, weil mit xlim(0,10) und ylim() der Bereich zu groß ist und weil die Formel falsch ist.

Grüße
Gerrit
Zuletzt geändert von gkuhl am Donnerstag 15. April 2010, 18:42, insgesamt 1-mal geändert.
basti!
User
Beiträge: 13
Registriert: Donnerstag 15. April 2010, 18:04

Code: Alles auswählen

import numpy as np
import pylab as plt
from math import  e
from matplotlib.pyplot import legend, xlim, ylim

lam = np.linspace (0,10*e-6,10000)
  
def planc(x,T):
   lam = np.linspace (0,10*e-6,10000)
   c1=0.374e-15
   c2=1.439e-2  
   return ((c1/(x**5))*(1/(np.exp(c2/x*T))-1))
 


for t in (300,400,600,800,1000): 
   plt.plot(lam*1e6, planc(lam,t))   
   



legend()

xlim(0, 10)
ylim(0, 14000)

plt.xlabel('Wellenlaenge(muekrometer)')
plt.ylabel('Spektrale Energieflussdichte(W/m^2muekrometer)')
plt.title('Planck')


plt.show()

habt ihr so gemeint??[/code]
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Ja, das ist die besagte Funktion.


plt für pylab finde ich etwas komisch, da kein t in pylab vorkommt.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
basti!
User
Beiträge: 13
Registriert: Donnerstag 15. April 2010, 18:04

Hab ichs jetzt richtig??
Funktioniert leider immer noch nicht

Code: Alles auswählen

import numpy as np
import pylab as py
from math import  e
from matplotlib.pyplot import legend, xlim, ylim

lam = np.linspace (0,10e-6,1000)
  

c1=0.374e-15
c2=1.439e-2 


B = lambda x,T : (c1/(x**5)*1)/(np.exp(c2/x*T))-1

 
for t in (300,400,600,800,1000): 
   py.plot(lam*1e6, B(lam,t))   
   



legend()




py.xlabel('Wellenlaenge($\mu$m)')
py.ylabel('Spektrale Energieflussdichte(W/$\mu$m^2)')
py.title('Planck')


py.show()
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

basti! hat geschrieben:Hab ichs jetzt richtig??
Funktioniert leider immer noch nicht
Dann ist es wohl auch nicht richtig, aber du näherst dich. :wink:
- Das Planck-Gesetz ist jetzt "noch weniger" richtig. Schau doch nochmal genau hin.
- Warum steht da ein ``1e6`` in Zeile 17.
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Statt `py` lieber `lab`, aber sind die 5 Buchstaben so schlimm?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Oder:

Code: Alles auswählen

import matplotlib.pyplot as plt
Da kommt die Abkürzung auch eigentlich her.
Gabelmensch
User
Beiträge: 79
Registriert: Montag 12. Oktober 2009, 11:50

plt nutze ich auch immer, steht im Kopf fuer Plot. Finde ich recht eingaengig.
basti!
User
Beiträge: 13
Registriert: Donnerstag 15. April 2010, 18:04

Hab noch ewig rumgetüftelt aber jetzt hab ichs geschafft.
Nochmal danke für eure Hilfe
Antworten