Vorbereitung
Für unser Projekt werden wir einige historische Daten zum Sonnenstand verwenden, die wir von der SEC-Website oder dem Space Environment Center abrufen. Sie sind ursprünglich in einer TXT-Datei enthalten. Um unsere Entwicklung zu beschleunigen, werden wir sie jedoch direkt in die Datenbank aufnehmen unser Programm in einem Tupel auf folgende Weise:
data = [ # Jahr Monat Niedrig Hohe Vorhersage (2004, 12, 34,2, 35,2, 33,2), (2005, 1, 31,5, 34,5, 28,5), # Fahren Sie mit weiteren Daten fort ]
Es ist wichtig zu erwähnen, dass wir mit diesen Daten, die wir einspeisen, die Linien unseres Diagramms erzeugen.
Polylinien verwenden
Bevor wir fortfahren, müssen wir wissen, wie man die Linien zeichnet. Dazu werden wir PolyLines verwenden , die nicht mehr als eine Klasse von ReportLab sind , die es uns ermöglicht, Linien aus Koordinaten zu generieren. Diese Koordinaten erhalten sie als Argument. Nachfolgend sehen wir, wie ein einfaches Diagramm erstellt wird.
Mit der PolyLine-Linie ([(0, 0), (10, 0), (10, 10), (0, 10)] können wir ein Diagramm erzeugen, das wir in der folgenden Abbildung sehen:
Erste Implementierung
Da wir wissen, mit welchen Tools wir arbeiten werden, ist es Zeit, unsere erste Version des Programms zu erstellen.
Zuerst sehen wir den vorgeschlagenen Code, dann erklären wir seine Funktionsweise:
aus reportlab.lib importieren Sie Farben aus reportlab.graphics.shapes importieren * aus reportlab.graphics importieren Sie renderPDF data = [ (2005, 8, 113,2, 114,2, 112,2), (2005, 9, 112,8, 115,8, 109,8), (2005, 10, 111,0, 116,0, 106,0), (2005, 11, 109,8, 116,8, 102,8), (2005, 12, 107,3, 115,3, 99,3), (2006, 1, 105,2, 114,2, 96,2), (2006, 2, 104,1, 114,1, 94,1), (2006, 3, 99,9, 110,9, 88,9), (2006, 4, 94,8, 106,8, 82,8), (2006, 5, 91,2, 104,2, 78,2), ] Zeichnen = Zeichnen (200, 150) pred = [row [2] -40 für row in data] hoch = [Zeile [3] -40 für Zeile in Daten] niedrig = [Zeile [4] -40 für Zeile in Daten] times = [200 * ((row [0] + row [1] / 12.0) - 2005) -110 für row in data] drawing.add (PolyLine (zip (times, pred), strokeColor = colors.blue)) drawing.add (PolyLine (zip (times, high), strokeColor = colors.red)) drawing.add (PolyLine (zip (times, low), strokeColor = colors.green)) drawing.add (String (65, 115, 'Sunspots', fontSize = 18, fillColor = colors.red)) renderPDF.drawToFile (Zeichnung, 'report1.pdf', 'Sonnenflecken')
In dem Code, mit dem wir den Import der erforderlichen Pakete beginnen, enthalten wir die Klassenfarben , mit denen wir die Grafiken einfärben können. Anschließend definieren wir unsere Daten. Dieses Mal haben wir viel mehr Daten einbezogen, um eine vollständigere Grafik zu erstellen.
Wir haben die Drawing-Klasse erstellt und bereiten dann die drei Variablen vor, die erfasst werden sollen.
Schließlich integrieren wir mit der add-Methode die Variablen, die mit den bereits vorbereiteten Daten definiert wurden. Sobald wir die 3 Abschnitte haben, erstellen wir das PDF mit der drawToFile- Methode und am Ende sollten wir etwas haben, das dem Folgenden sehr ähnlich ist:
Wie wir sehen, haben wir bereits die Linien gezeichnet, die den einbezogenen Daten entsprechen. Wir müssen dem Bericht jedoch noch etwas mehr Sinn geben. Dazu müssen wir Richtlinien einbeziehen. Wenn wir jedoch erst wissen, wie dies funktioniert, können wir den Rest hinter uns lassen.