Python - Skapa PDF med grafik, del 2

Innehållsförteckning
I den första delen av handledningen beskriver vi de grundläggande punkterna för varför Pytonorm Det är ett bra alternativ att bygga grafiska element från textdata, vi kan också se lite hur man hanterar modulen ReportLab för att skapa en enkel PDF med ritad testtext.
Förberedelse
För att göra vårt projekt kommer vi att ta några historiska data om solens position, vi tar detta från webbplatsen för SEC eller Space Environment Center, det är ursprungligen i en .txt -fil, men för att påskynda vår utveckling går vi att inkludera det direkt i vårt program i en tupel enligt följande:
 data = [ # År Månadsprognos Hög Låg (2004, 12, 34,2, 35,2, 33,2), (2005, 1, 31,5, 34,5, 28,5), # Fortsätter med mer data] 

Det är viktigt att nämna att med denna data som vi matar kommer vi att generera raderna i vårt diagram.
Använda Polylines
Innan vi fortsätter måste vi veta hur vi ska dra linjerna, för detta kommer vi att använda PolyLines som bara är en ReportLab -klass som gör att vi kan generera linjer från koordinater, mottas dessa koordinater som ett argument. Låt oss se hur vi genererar en enkel graf.
Med PolyLine -linjen ([(0, 0), (10, 0), (10, 10), (0, 10)]) kan vi generera en graf som vi ser i följande bild:

Första genomförandet
Eftersom vi vet vilka verktyg vi ska arbeta med är det dags att göra vår första version av programmet.
Först ska vi se den föreslagna koden, sedan kommer vi att förklara hur det fungerar:
 från reportlab.lib importfärger från reportlab.graphics.shapes import * från 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 för rad i data] hög = [rad [3] -40 för rad i data] låg = [rad [4] -40 för rad i data] gånger = [200 * ( (rad [0] + rad [1] /12.0) - 2005) -110 för rad i data] drawing.add (PolyLine (zip (times, pred), strokeColor = colors.blue)) drawing.add (PolyLine (zip (gånger, hög), strokeColor = färger.röda)) drawing.add (PolyLine (zip (times, low), strokeColor = colors.green)) drawing.add (String (65, 115, 'Sunspots', fontSize = 18 , fillColor = colors.red)) renderPDF.drawToFile (ritning, 'report1.pdf', 'Sunspots') 

I koden börjar vi med att importera nödvändiga paket, vi inkluderar färger klass som gör att vi kan rita graferna i färg, då definierar vi våra data, den här gången har vi inkluderat mycket mer data för att göra en mer komplett graf.
Vi instanserar Ritningsklass och sedan förbereder vi de tre variablerna som vi ska översätta.
Äntligen med honom lägg till metod vi införlivar de variabler som definieras med de data som redan är förberedda, när vi har de tre sektionerna bygger vi PDF -filen med metoden drawToFile och i slutändan borde vi ha något som liknar följande:

Som vi kan se har vi redan dragit linjerna som motsvarar de införlivade uppgif.webpterna, men vi måste fortfarande ge rapporten lite mer mening, för detta måste vi inkludera riktlinjer, men när vi vet hur detta fungerar kan vi lämna resten till dem.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave