Seite 1 von 1

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

Verfasst: Samstag 20. November 2010, 22:01
von p90
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

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

Verfasst: Sonntag 21. November 2010, 11:05
von Darii
Du könntest mit `yticks` die Achsenbeschriftung selber bestimmen. Geht aber sicherlich noch irgendwie schöner.

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

Verfasst: Montag 22. November 2010, 20:06
von p90
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.

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

Verfasst: Montag 22. November 2010, 21:29
von Darii
Ja und? Das tut es doch dann. Du musst den 2. Graph dann natürlich auch selbst logarithmisch skalieren.

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

Verfasst: Montag 22. November 2010, 23:44
von p90
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)

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

Verfasst: Dienstag 23. November 2010, 08:11
von Darii
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.