Índice
Na primeira parte do tutorial, descrevemos os pontos básicos de por que Pitão É uma boa opção para construir elementos gráficos a partir de dados de texto, também podemos ver um pouco como lidar com o módulo ReportLab para gerar um PDF simples com texto de teste desenhado.Preparação
Para fazer nosso projeto vamos pegar alguns dados históricos sobre a posição do sol, tiramos do site da SEC ou do Space Environment Center, está originalmente em um arquivo .txt, porém para acelerar nosso desenvolvimento vamos para incluí-lo diretamente em nosso programa em uma tupla da seguinte maneira:
data = [# Ano Mês Predição Alta Baixa (2004, 12, 34,2, 35,2, 33,2), (2005, 1, 31,5, 34,5, 28,5), # Continua com mais dados]
É importante mencionar que com esses dados que alimentaremos geraremos as linhas do nosso gráfico.
Usando Polilinhas
Antes de continuar devemos saber traçar os limites, para isso usaremos PolyLines que é apenas um Classe ReportLab que nos permite gerar linhas a partir de coordenadas, essas coordenadas são recebidas como um argumento. Vamos ver a seguir como gerar um gráfico simples.
Com a linha Polilinha ([(0, 0), (10, 0), (10, 10), (0, 10)]) podemos gerar um gráfico que vemos na imagem a seguir:
Já que sabemos com quais ferramentas vamos trabalhar, é hora de fazer nossa primeira versão do programa.
Primeiro veremos o código proposto e, em seguida, explicaremos como funciona:
from reportlab.lib importar cores de 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),] desenho = Desenho (200, 150) pred = [linha [2] -40 para linha nos dados] alto = [linha [3] -40 para linha nos dados] baixo = [linha [4] -40 para linha nos dados] vezes = [200 * ( (linha [0] + linha [1] /12.0) - 2005) -110 para linha nos dados] drawing.add (PolyLine (zip (times, pred), strokeColor = colors.blue)) drawing.add (PolyLine (zip (vezes, alto), 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 (drawing, 'report1.pdf', 'Sunspots')
No código, começamos importando os pacotes necessários, incluímos o classe de cores que nos permite desenhar os gráficos em cores, então definimos nossos dados, desta vez incluímos muito mais dados para fazer um gráfico mais completo.
Nós instanciamos o Classe de desenho e então preparamos as três variáveis que vamos traduzir.
Finalmente com ele adicionar método estamos incorporando as variáveis definidas com os dados já preparados, uma vez que temos as 3 seções construímos o PDF com o método drawToFile e no final devemos ter algo muito semelhante ao seguinte: