Seite 1 von 1
Bild und Text auf eine Seite
Verfasst: Donnerstag 5. September 2019, 11:56
von Ede1994
Hallo.
Ich würde gerne eine Seite erstellen z.B. im pdf-Format welche wie folgt aufgebaut sein soll:
Code: Alles auswählen
Name:
Uhrzeit:
----
PLOT
----
Frame 1: 1
Frame 2: 2
.
.
Frame n: 3
Also zwischen zwei Textblöcken soll ein Plot eingefügt werden. Wie man alles einzeln in ein File schreibt weiß ich. Ich habe bis jetzt das:
Code: Alles auswählen
file = open('Frames/Frames2_' + NAME[0] + '.pdf','w')
file.write('Patient Name'+ ': ' + NAME[0]) #print patient name
file.write('\nTime: ' + time) #print time Duration
file.write('\n\nsublists_threshold:') #print sublists_threshold
for value, counter in zip(timesteps_threshold, count(1)):
file.write('\nFrame {}: {}'.format(counter, value))
file.close()
Aber wie bekomme ich da jetzt noch ein Bild rein!?
Re: Bild und Text auf eine Seite
Verfasst: Donnerstag 5. September 2019, 12:03
von __deets__
Das ist kein PDF, nur weil du die Endung so benennst. Dazu muss das Format stimmen, und um so etwas zu machen gibt es zB ReportLab, mit dem man PDF-Dateien erzeugen kann.
Re: Bild und Text auf eine Seite
Verfasst: Donnerstag 5. September 2019, 12:15
von Ede1994
Ja das war mir soweit klar, mir ging es auch eher um die Möglichkeit den Plot z.B. mittels mathplotlib mit in das File einzubinden. ReportLab kannte ich bisher nicht. Gibt es sonst noch eine Möglichkeit?
Re: Bild und Text auf eine Seite
Verfasst: Donnerstag 5. September 2019, 12:29
von __deets__
Hast du nach einer gesucht? Und was an reportlab gefällt dir nicht?
Re: Bild und Text auf eine Seite
Verfasst: Donnerstag 5. September 2019, 12:38
von Ede1994
Ich hab es erst mit matplotlib.backends.backend_pgf probiert. Aber ich hab mich jetzt mit reportlab beschäftigt, ich probiere es einfach mal aus. Bei weiteren Fragen melde ich mich einfach wieder

Re: Bild und Text auf eine Seite
Verfasst: Donnerstag 5. September 2019, 12:39
von __blackjack__
@Ede1994: Du baust da mit `zip()` und `count()` die `enumerate()`-Funktion nach.
Das Du *Zeilenenden* immer am *Anfang* eines Schreibvorgangs setzt ist auch etwas komisch und führt hier zu einer Datei bei der die letzte Zeile nicht mit einem Zeilenendezeichen abgeschlossen ist.
Zwei literale Zeichenketten mit ``+`` zu Verbinden macht keinen Sinn.
Die Kommentare erscheinen extrem sinnlos.
Textdateien sollte man immer mit einer Kodierung öffnen.
Ungetestet:
Code: Alles auswählen
with open(
"Frames/Frames2_{}.pdf".format(NAME[0]), "w", encoding="utf-8"
) as file:
file.write(
"Patient Name: {}\n"
"Time: {}\n\n"
"sublists_threshold:\n".format(NAME[0], time)
)
for frame_number, value in enumerate(timesteps_threshold, 1):
file.write("Frame {}: {}\n".format(frame_number, value))
In eine Textdatei kann man keine Grafik speichern, zumindest nicht solange die nicht nur aus (Unicode-)Zeichen besteht. Einfache Plots sind so natürlich möglich, zum Beispiel Balkendiagramme oder auch Scatterplots. Natürlich mit einer nicht besonders hohen Auflösung. Es gibt ein paar Implementierungen in Python wie `aplotter`, `bashplotlib`, oder `asciichartpy`. ``gnuplot`` als externes Programm kann das auch.
ReportLab ist so etwas wie die Standardlösung wenn man in Python PDFs erzeugen möchte und nicht den Umweg über LaTeX gehen mag. Ansonsten könntest Du auch überlegen eine HTML-Ausgabe zu programmieren. Da kann man ja auch leicht Grafiken einbinden. Kommt halt so ein bisschen darauf an, was das Ziel ist.
Re: Bild und Text auf eine Seite
Verfasst: Freitag 6. September 2019, 09:34
von Ede1994
Okay. Danke für die Hinweise!
Hab es jetzt mit reportlab gelöst und enumerate mit eingearbeitet! Jetzt ist alles so wie es sein soll
