Съдържание
В първата част на урока описваме основните моменти защо Python Това е добър вариант за изграждане на графични елементи от текстови данни, също бихме могли да видим малко как да се справим с модула ReportLab за генериране на обикновен PDF файл с нарисуван тестов текст.Подготовка
За да направим нашия проект, ще вземем някои исторически данни за положението на Слънцето, ще вземем това от уебсайта на SEC или Space Environment Center, първоначално е в .txt файл, но за да ускорим развитието си да го включим директно в нашата програма на кортеж, както следва:
данни = [ # Година Прогноза за месец Висока Ниска (2004, 12, 34.2, 35.2, 33.2), (2005, 1, 31.5, 34.5, 28.5), # Продължава с още данни]
Важно е да споменем, че с тези данни, които ще захранваме, ще генерираме линиите на нашата графика.
Използване на полилинии
Преди да продължим, трябва да знаем как да чертаем линиите, за това ще използваме PolyLines който е само един ReportLab клас което ни позволява да генерираме линии от координати, тези координати се приемат като аргумент. Нека да видим по -нататък как да генерираме проста графика.
С линията PolyLine ([(0, 0), (10, 0), (10, 10), (0, 10)]) можем да генерираме графика, която виждаме на следното изображение:
Тъй като знаем с какви инструменти ще работим, е време да направим първата си версия на програмата.
Първо ще видим предложения код, след което ще обясним как работи:
от reportlab.lib импортиращи цветове от reportlab.graphics.shapes импортиране * от reportlab.graphics импортиране renderPDF данни = [(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),] чертеж = Чертеж (200, 150) пред = [ред [2] -40 за ред в данни] висок = [ред [3] -40 за ред в данни] нисък = [ред [4] -40 за ред в данни] пъти = [200 * ( (ред [0] + ред [1] /12.0) - 2005) -110 за ред в данни] drawing.add (PolyLine (zip (times, pred), strokeColor = colors.blue)) drawing.add (PolyLine (zip (пъти, високо), 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 (чертеж, 'report1.pdf', 'Sunspots')
В кода, който започваме с импортиране на необходимите пакети, включваме клас цветове което ни позволява да рисуваме графиките в цвят, след това дефинираме нашите данни, този път сме включили много повече данни, за да направим по -пълна графика.
Ние създаваме Клас по рисуване и след това подготвяме трите променливи, които ще преведем.
Най -накрая с него метод за добавяне ние включваме променливите, дефинирани с вече подготвените данни, след като имаме 3 раздела, ние изграждаме PDF с метода drawToFile и в крайна сметка трябва да имаме нещо много подобно на следното: