Python - Lag PDF med grafikk, del 2

Innholdsfortegnelse
I den første delen av opplæringen beskriver vi de grunnleggende punktene om hvorfor Python Det er et godt alternativ å bygge grafiske elementer fra tekstdata, vi kunne også se litt hvordan vi skal håndtere modulen ReportLab for å generere en enkel PDF med tegnet testtekst.
Forberedelse
For å gjøre prosjektet vårt, skal vi ta noen historiske data om solens posisjon. å inkludere det direkte i programmet vårt i en tupel som følger:
 data = [ # År Måned Prediksjon Høy Lav (2004, 12, 34,2, 35,2, 33,2), (2005, 1, 31,5, 34,5, 28,5), # Fortsetter med flere data] 

Det er viktig å nevne at med disse dataene som vi vil mate vil vi generere linjene i grafen vår.
Bruker Polylines
Før vi fortsetter må vi vite hvordan vi skal tegne linjene, for dette skal vi bruke PolyLines som bare er en ReportLab -klasse som lar oss generere linjer fra koordinater, mottas disse koordinatene som et argument. La oss se hvordan du genererer en enkel graf.
Med PolyLine -linjen ([(0, 0), (10, 0), (10, 10), (0, 10)]) kan vi generere en graf som vi ser i følgende bilde:

Første implementering
Siden vi vet hvilke verktøy vi skal jobbe med, er det på tide å lage vår første versjon av programmet.
Først skal vi se den foreslåtte koden, så vil vi forklare hvordan den fungerer:
 fra reportlab.lib importfarger fra reportlab.graphics.shapes import * fra 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),] drawing = Drawing (200, 150) pred = [rad [2] -40 for rad i data] høy = [rad [3] -40 for rad i data] lav = [rad [4] -40 for rad i data] ganger = [200 * ( (rad [0] + rad [1] /12.0) - 2005) -110 for rad i data] drawing.add (PolyLine (zip (times, pred), strokeColor = colors.blue)) drawing.add (PolyLine (zip (ganger, høy), 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 (tegning, 'report1.pdf', 'Sunspots') 

I koden starter vi med å importere de nødvendige pakkene, vi inkluderer farger klasse som lar oss tegne grafene i farger, så definerer vi dataene våre, denne gangen har vi inkludert mye mer data for å lage en mer komplett graf.
Vi instantiserer Tegningsklasse og så forbereder vi de tre variablene som vi skal oversette.
Til slutt med ham legg til metode vi inkorporerer variablene definert med dataene som allerede er forberedt, når vi har de 3 seksjonene, bygger vi PDF -filen med metoden drawToFile og til slutt bør vi ha noe som ligner veldig på følgende:

Som vi kan se, har vi allerede tegnet linjene som tilsvarer de inkorporerte dataene, men vi må fortsatt gi rapporten litt mer mening, for dette må vi inkludere retningslinjer, men når vi vet hvordan dette fungerer, kan vi la resten være til dem.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave