Brauche Hilfe bei einem Plot

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
Basilius Sapientia
User
Beiträge: 46
Registriert: Freitag 5. September 2014, 22:34

Erstes mal, dass ich Python verwende. Ich habe drei Datenreihen. Ich muss zwei Kurven zeichnen (im gleichen Graph). Einmal X_1, T/K und einmal X_2, T/K.

Hier die Datenreihen:

Code: Alles auswählen

T/K			X_1			X_2
309.820			0.473			0.529
309.422			0.400			0.601
309.031			0.371			0.625
308.006			0.326			0.657
306.686			0.293			0.690
304.553			0.255			0.724
301.803			0.218			0.758
299.097			0.193			0.783
296.000			0.168			0.804
294.534			0.157			0.814
Was ist bitte an diesem Code dann falsch?

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

with open("Data.txt") as f:
data = f.read()
data = data.split('\n')

x = [row.split(' ')[0] for row in data]
y = [row.split(' ')[1] for row in data]

fig = plt.figure()

ax1 = fig.add_subplot(111)

ax1.set_title("Plot title...")    
ax1.set_xlabel('X values')
ax1.set_ylabel('T [K]')

ax1.plot(x,y, c='r', label='the data')

leg = ax1.legend()

plt.show()
Ich hätte gerne, dass einfach nur, dass alles geplottet wird. Ich bin ein blutiger Anfänger und dachte mir, jetzt habe ich über Python gelesen und Introduktionen durchgesehen - jetzt muss ich es endlich für meine "Chemiekarriere" andwenden. Doch gleich bei meinem ersten Code kam kein Resultat. Also bitte helft mir - das wäre schön :D ... wie gesagt, bin ein blutiger Anfänger :oops:

Viele liebe Grüße und ein großes Dankeschön für Hilfe!
BlackJack

@Basilius Sapientia: Was an dem Code falsch ist sagt die Fehlermeldung: Die Einrückung stimmt nicht. Woher soll der Compiler wissen welche Zeilen zum ``with``-Block gehören und welche nicht mehr?

Wobei sich zum Einlesen der Daten eher eine der Numpy-Funktionen eignet um Textdateien in Numpy-Arrays zu lesen.

Edit:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
import numpy as np
from matplotlib import pyplot as plt


def main():
    data = np.genfromtxt('test.dat', names=True)

    figure = plt.figure()
    axis = figure.add_subplot(111)
    axis.set_title('Plot title...')
    axis.set_xlabel('X values')
    axis.set_ylabel('$T$ (in K)')
    axis.plot(data['TK'], data['X_1'], color='red', label='the data')
    axis.legend()

    plt.show()


if __name__ == '__main__':
    main()
Basilius Sapientia
User
Beiträge: 46
Registriert: Freitag 5. September 2014, 22:34

BlackJack hat geschrieben:@Basilius Sapientia: Was an dem Code falsch ist sagt die Fehlermeldung: Die Einrückung stimmt nicht. Woher soll der Compiler wissen welche Zeilen zum ``with``-Block gehören und welche nicht mehr?

Wobei sich zum Einlesen der Daten eher eine der Numpy-Funktionen eignet um Textdateien in Numpy-Arrays zu lesen.

Edit:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
import numpy as np
from matplotlib import pyplot as plt


def main():
    data = np.genfromtxt('test.dat', names=True)

    figure = plt.figure()
    axis = figure.add_subplot(111)
    axis.set_title('Plot title...')
    axis.set_xlabel('X values')
    axis.set_ylabel('$T$ (in K)')
    axis.plot(data['TK'], data['X_1'], color='red', label='the data')
    axis.legend()

    plt.show()


if __name__ == '__main__':
    main()

Vielen Dank: doch dann bekomme ich diese Probleme:
make (im Verzeichnis: /home/conrad/Dokumente/Q5/Makro/Aflevering_4/Python_Code)
Kompilierung fehlgeschlagen.
make: *** Keine Targets angegeben und keine »make«-Steuerdatei gefunden. Schluss.
Was tun? Vielen Dank schon mal im Voraus!!!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wieso hast Du den ein Makefile für Python-Code?

Starte das Modul doch einfach mal so :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Basilius Sapientia
User
Beiträge: 46
Registriert: Freitag 5. September 2014, 22:34

Hyperion hat geschrieben:Wieso hast Du den ein Makefile für Python-Code?

Starte das Modul doch einfach mal so :-)
Ich verstehe nicht was du meinst :( - ich bin ein vollkommener Anfänger. Ich habe nur dieses Tutorial gelesen: http://anh.cs.luc.edu/python/hands-on/3 ... torial.pdf (und ein paar andere Tutorials). Danach habe ich auf meinem Linux Mint 17 Python und Geany installiert.

Code: Alles auswählen

sudo -s
apt-get install python
apt-get install geany
Danach habe ich diesen Code in Geany kopiert, alles gespeichter und dann auf kompilieren gedrückt:

Code: Alles auswählen

 #!/usr/bin/env python
    # coding: utf8
    import numpy as np
    from matplotlib import pyplot as plt
     
     
    def main():
        data = np.genfromtxt('test.dat', names=True)
     
        figure = plt.figure()
        axis = figure.add_subplot(111)
        axis.set_title('Plot title...')
        axis.set_xlabel('X values')
        axis.set_ylabel('$T$ (in K)')
        axis.plot(data['TK'], data['X_1'], color='red', label='the data')
        axis.legend()
     
        plt.show()
     
     
    if __name__ == '__main__':
        main()
Bitt erkläre mir, was ich da anders machen sollte? Ich tue mein bestes, doch dies ist mein aller aller erstes mal mit Programmierung (und mein aller erster eigener Python Code). Das einzige was ich will ist, dass ich diese Punkte (in einem Plot) graphisch dastelle.

Code: Alles auswählen

   
T/K                     X_1                     X_2
    309.820                 0.473                   0.529
    309.422                 0.400                   0.601
    309.031                 0.371                   0.625
    308.006                 0.326                   0.657
    306.686                 0.293                   0.690
    304.553                 0.255                   0.724
    301.803                 0.218                   0.758
    299.097                 0.193                   0.783
    296.000                 0.168                   0.804
    294.534                 0.157                   0.814
Dann sollte der Graph ein xlabel, ylabel und eine Überschrift haben. Die Punkte sollten mit y=ax^2+bx+C "gefittet" (also regression - hierbei wäre es schön wenn die Linie danach eingezeichnet werden könnte; desweiteren wäre es schön koefficienten zu erhalten (mit einem Unsicherheitsfaktor)) werden. Ich weiß das ist viel, was ich da verlange. Doch ich habe ja auch schon selbst versucht - und es gelingt mir nicht etwas ordentliches rauszubekommen. Ich brauche einfach viel Anfangshilfe - dann werde ich später auch besser werden. Leider kann ich keinen um Hilfe bitten (weil keiner Programmierer ist in meiner Umgebung) - deshalb komme ich zu euch.

Also wie würdet ihr mein Problem lösen in Python?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Basilius Sapientia hat geschrieben:
Hyperion hat geschrieben: Starte das Modul doch einfach mal so :-)
Ich verstehe nicht was du meinst :( - ich bin ein vollkommener Anfänger.
Du sollst das einfach in einer Shell aufrufen :-)

Code: Alles auswählen

python datei.py
Wird im offiziellen Tutorial auch beschrieben.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten