pyplot: exp(a*x) logaritmisch darstellen aber exp(a*x)=inf

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
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Hi,
folgendes Problem.

Code: Alles auswählen

    
x2 = numpy.arange(100, 1000, 0.02)
    y2 = []
    for i in x2:
        y2.append(numpy.exp(-17.625038*i+10366.440))
    reg.semilogy(x2, y2, label="Regression")
Das Problem ist nun das numpy.exp(-17.625038*i+10366.440)=inf ist.
Gibt es eine Möglichkeit die Daten an pylot so zu übergeben, das er sie direkt einträgt?
Also was ich meine ist:
Es soll der Punkt (0,5) gezeichnet werden. Ich übergebe diesen, dann zieht pyplot ja den log aus 5 um die Höhe in der es eingezeichnet werden muss zu erhalten. Ich will nun das pyplot zwar eine logaritmische Skala anzeigt aber meine Daten linear einzeichnet.
Geht das irgendwie?
Experimentiere jetzt schon zwei Abende rum und habe immer noch nichts gefunden.
bis später


p90
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Du könntest mit `yticks` die Achsenbeschriftung selber bestimmen. Geht aber sicherlich noch irgendwie schöner.
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Bump

Hat den keiner eine Idee?
yticks ist nicht so ideal da ich noch einen zweiten Plot habe die dann zusammen in die selbe figure geplottet werden. Die müssten sich also genau überlappen.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Ja und? Das tut es doch dann. Du musst den 2. Graph dann natürlich auch selbst logarithmisch skalieren.
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Sorry aber ich verstehe einfach nicht wie das Funktionieren soll.
Hab mein Programm erst mal so angepasst das beide zwar linear von pyplot geplottet werden aber in wirklichkeit bereits log sind. So weit so gut. Jetzt muss ich nur noch die Axenbeschriftung irgenwie anpassen. Wollte als Test das Bsp aus der Doku nehmen.
Leider macht die Zeile:
plt.yticks( numpy.arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue'))
überhaupt nichts.
Sollte ich nicht hier dann meine neue Skala haben? Was mach ich falsch?
Hier der Code

Code: Alles auswählen

    
    plt.ylabel("Events")
    plt.xlabel("Channel")
    plt.title(title)
    plt.yticks( numpy.arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue'))
    fig = plt.figure()
    ax = fig.add_subplot(111)
    reg = fig.add_subplot(111)

    
    x2 = numpy.arange(x[0], x[-1], 0.02)
    y2 = []
    for i in x2:
        y2.append(-0.00597*i+9.823)
    reg.plot(x2, y2, label="Regression")
    ax.bar(x, ylog, yerr=yerr, log=False, linewidth=0, fill=False, label="Messdaten")
    pylab.legend(loc=4)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Vermutlich liegt es an den zwei Subplots die du erstellst. Mach yticks nochmal danach oder das den 2. subplot weg, den brauchst du eigentlich nicht. Keine Ahnung was da jetzt genau passiert so wie du es machst.
Antworten