Python - Vytvořte PDF s grafikou, část 2

Obsah
V první části tutoriálu popíšeme základní body proč Krajta Je to dobrá možnost stavět grafické prvky z textových dat, mohli jsme také trochu vidět, jak s modulem zacházet ReportLab ke generování jednoduchého PDF s nakresleným testovacím textem.
Příprava
K provedení našeho projektu vezmeme nějaká historická data o poloze Slunce, vezmeme to z webových stránek SEC nebo Space Environment Center, původně je to v souboru .txt, ale pro urychlení našeho vývoje jdeme zahrnout jej přímo do našeho programu v n -tici takto:
 data = [ # Year Month Prediction High Low (2004, 12, 34.2, 35.2, 33.2), (2005, 1, 31.5, 34.5, 28.5), # Continues with more data] 

Je důležité zmínit, že s těmito daty, která budeme krmit, vygenerujeme řádky našeho grafu.
Použití křivek
Než budeme pokračovat, musíme vědět, jak nakreslit čáry, k tomu použijeme PolyLines který je jen jeden Třída ReportLab což nám umožňuje generovat čáry ze souřadnic, tyto souřadnice jsou přijímány jako argument. Podívejme se dále, jak vygenerovat jednoduchý graf.
Pomocí čáry PolyLine ([(0, 0), (10, 0), (10, 10), (0, 10)]) můžeme vygenerovat graf, který vidíme na následujícím obrázku:

První implementace
Protože víme, s jakými nástroji budeme pracovat, je na čase vytvořit naši první verzi programu.
Nejprve uvidíme navrhovaný kód a poté vysvětlíme, jak funguje:
 z reportlab.lib import barev z reportlab.graphics.shapes import * z 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),] kresba = kresba (200, 150) pred = [řádek [2] -40 pro řádek v datech] vysoký = [řádek [3] -40 pro řádek v datech] nízký = [řádek [4] -40 pro řádek v datech] krát = [200 * ( (řádek [0] + řádek [1] /12.0) - 2005) -110 pro řádek v datech] 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 (kresba, 'report1.pdf', 'Sunspots') 

V kódu, který začneme importem potřebných balíčků, zahrneme soubor barevná třída to nám umožňuje kreslit grafy barevně, poté definujeme naše data, tentokrát jsme zahrnuli mnohem více dat, abychom vytvořili úplnější graf.
Instalováme instanci Třída kresby a poté připravíme tři proměnné, které se chystáme přeložit.
Konečně s ním přidat metodu začleňujeme proměnné definované s již připravenými daty, jakmile máme 3 sekce, vytvoříme PDF pomocí metody drawToFile a nakonec bychom měli mít něco velmi podobného následujícímu:

Jak vidíme, již jsme nakreslili čáry odpovídající začleněným datům, ale stále musíme dát zprávě trochu větší význam, proto musíme začlenit vodicí čáry, ale jakmile budeme vědět, jak to funguje, můžeme nechat zbytek jim.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave