Inhoudsopgave
In het eerste deel van de tutorial beschrijven we de basispunten van waarom: Python Het is een goede optie om grafische elementen uit tekstgegevens te bouwen, we kunnen ook een beetje zien hoe we met de module moeten omgaan ReportLab om een eenvoudige PDF met getekende testtekst te genereren.Voorbereiding
Om ons project te doen, gaan we wat historische gegevens over de positie van de zon nemen, we halen dit van de website van de SEC of Space Environment Center, het is oorspronkelijk in een .txt-bestand, maar om onze ontwikkeling te versnellen gaan we om het als volgt rechtstreeks in ons programma op te nemen in een tupel:
data = [# Jaar Maand Voorspelling Hoog Laag (2004, 12, 34,2, 35,2, 33,2), (2005, 1, 31,5, 34,5, 28,5), # Gaat verder met meer gegevens]
Het is belangrijk om te vermelden dat we met deze gegevens die we zullen voeden, de lijnen van onze grafiek zullen genereren.
Polylijnen gebruiken
Voordat we verder gaan, moeten we weten hoe we de lijnen moeten tekenen, hiervoor gebruiken we Polylijnen dat is er maar één ReportLab klasse waarmee we lijnen kunnen genereren uit coördinaten, deze coördinaten worden als argument ontvangen. Laten we nu kijken hoe we een eenvoudige grafiek kunnen genereren.
Met de PolyLine-lijn ([(0, 0), (10, 0), (10, 10), (0, 10)]) kunnen we een grafiek genereren die we in de volgende afbeelding zien:
Eerste implementatie
Omdat we weten met welke tools we gaan werken, is het tijd om onze eerste versie van het programma te maken.
Eerst gaan we de voorgestelde code bekijken, daarna leggen we uit hoe het werkt:
uit reportlab.lib importeer kleuren uit reportlab.graphics.shapes import * from reportlab.graphics import 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)] tekening = Tekening (200, 150) pred = [rij [2] -40 voor rij in gegevens] hoog = [rij [3] -40 voor rij in gegevens] laag = [rij [4] -40 voor rij in gegevens] times = [200 * ( (rij [0] + rij [1] /12.0) - 2005) -110 voor rij 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 (tekening, 'report1.pdf', 'Zonnevlekken')
In de code beginnen we met het importeren van de benodigde pakketten, we nemen de kleuren klasse waarmee we de grafieken in kleur kunnen tekenen, dan definiëren we onze gegevens, deze keer hebben we veel meer gegevens toegevoegd om een completere grafiek te maken.
We instantiëren de Tekenles en dan bereiden we de drie variabelen voor die we gaan vertalen.
Eindelijk met hem methode toevoegen we nemen de variabelen op die zijn gedefinieerd met de gegevens die al zijn voorbereid, zodra we de 3 secties hebben, bouwen we de PDF met de methode tekenNaarBestand en uiteindelijk zouden we iets moeten hebben dat erg lijkt op het volgende:
Zoals we kunnen zien, hebben we de lijnen die overeenkomen met de opgenomen gegevens al getekend, maar we moeten het rapport nog wat meer betekenis geven, hiervoor moeten we richtlijnen opnemen, maar als we eenmaal weten hoe dit werkt, kunnen we de rest verlaten naar hen.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een positief punt te geven