Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


projeto de programação imperativa, Esquemas de Compressão de Dados

computa dados de uma produção de energia solar

Tipologia: Esquemas

2019

Compartilhado em 20/08/2019

ze-torress
ze-torress 🇧🇷

1 documento

1 / 4

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Main
import urllib.request as req
import json
import linha
import barras
import boxplot
#FUNCAO QUE VAI SER USADA FUTURAMENTE PARA A PLOTAGEM DOS GRÁFICOS,
VISTO QUE AS ENERGIAS, OU POTENCIAS, NEGATIVAS, NÃO SÃO, DE FATO,
NEGATIVAS, MAS SIM INDICAM QUE NÃO HOUVE PRODUÇÃO. O SENSATO AQUI
É DEIXAR O VALOR ASSOCIADO COMO "0"
def corrigir_variaveis(lista):
for i in range(len(lista)):
if lista[i] == -1:
lista[i] = 0
return lista
#A FUNCAO ABAIXO É BEM TRIVIAL. DADO UM MÊS {1,2,3,4,5,6}, ELA
RETORNA O NÚMERO DE DIAS NESSE MÊS.
def dias_mes(mes):
if mes % 2 == 1:
return 31
elif mes == 2:
return 28
else:
return 30
#ESSA FUNÇÃO SIMPLESMENTE FAZ COM QUE TODO DIA {1,2,3,...9} SEJA
ACOMPANHADO DO NÚMERO '0' À SUA ESQUERDA, FACILITANDO SUA APLICAÇÃO
NAS URLS.
def adicionar_zero(dia):
if dia < 10:
return '0'+str(dia)
else:
return str(dia)
# A FUNCAO REFERIDA ABAIXO, DADO UMA 'URL' COMO PARÂMETRO, A LÊ E
GUARDA TODO SEU CONTEÚDO NA VARIÁVEL 'dados', E, POSTERIORMENTE,
RETORNA UM DICIONÁRIO OU UMA LISTA.
def importar_tipo(url):
dados = req.urlopen(url).read().decode()
return json.loads(dados)
#********************************************************
pf3
pf4

Pré-visualização parcial do texto

Baixe projeto de programação imperativa e outras Esquemas em PDF para Compressão de Dados, somente na Docsity!

Main

import urllib.request as req import json import linha import barras import boxplot

#FUNCAO QUE VAI SER USADA FUTURAMENTE PARA A PLOTAGEM DOS GRÁFICOS, VISTO QUE AS ENERGIAS, OU POTENCIAS, NEGATIVAS, NÃO SÃO, DE FATO, NEGATIVAS, MAS SIM INDICAM QUE NÃO HOUVE PRODUÇÃO. O SENSATO AQUI É DEIXAR O VALOR ASSOCIADO COMO "0" def corrigir_variaveis(lista): for i in range(len(lista)): if lista[i] == -1: lista[i] = 0 return lista

#A FUNCAO ABAIXO É BEM TRIVIAL. DADO UM MÊS {1,2,3,4,5,6}, ELA RETORNA O NÚMERO DE DIAS NESSE MÊS. def dias_mes(mes): if mes % 2 == 1: return 31 elif mes == 2: return 28 else: return 30

#ESSA FUNÇÃO SIMPLESMENTE FAZ COM QUE TODO DIA {1,2,3,...9} SEJA ACOMPANHADO DO NÚMERO '0' À SUA ESQUERDA, FACILITANDO SUA APLICAÇÃO NAS URLS. def adicionar_zero(dia): if dia < 10: return '0'+str(dia) else: return str(dia)

# A FUNCAO REFERIDA ABAIXO, DADO UMA 'URL' COMO PARÂMETRO, A LÊ E

GUARDA TODO SEU CONTEÚDO NA VARIÁVEL 'dados', E, POSTERIORMENTE, RETORNA UM DICIONÁRIO OU UMA LISTA. def importar_tipo(url): dados = req.urlopen(url).read().decode() return json.loads(dados)

# ESSA FUNCAO, ESCOLHIDO OS DIA E MES COMO PARAMETROS, RETORNA A

LISTA CONTENDO AS POTÊNCIAS DO REFERIDO DIA DO DADO MES E A GUARDA

NUMA VARIÁVEL 'lista_potencias', LOGO DEPOIS, TODAS AS POTENCIAS '-1' (NOS HORÁRIOS EM QUE NÃO HÁ PRODUÇÃO DE ENERGIA) SERÃO TRANSFORMADAS NO NÚMERO '0', VISTO QUE PODERÁ INFLUENCIAR NEGATIVAMENTE NOS GRÁFICOS. def potencias_dia(dia,mes): dia = adicionar_zero(dia) url = 'http://albertocn.sytes.net/2019-1/pi/projeto/ dia_2019_0'+str(mes)+'_'+dia+'.json' lista_potencias = (importar_tipo(url)['potencia']) return corrigir_variaveis(lista_potencias)

# ESSA FUNÇÃO NOS PLOTA O GRÁFICO DE LINHAS, AO SER INVOCADA.

def plotar_linhas(): dia = 1 mes = 1 y = potencias_dia(dia,mes) x = range(1,193) linha.grafico(x,y)

plotar_linhas()

************************************************************

ESSA FUNCAO, DADO MES COMO PARÂMETRO, RETORNA UMA LISTA DE

VALORES CONTENDO A ENERGIA PRODUZIDA NOS DIAS DO RESPECTIVO MES. def captar_energia_mes(mes): x = range(1,dias_mes(mes)+1) y = list() for dia in x: url = 'http://albertocn.sytes.net/2019-1/pi/projeto/ dia_2019_0'+str(mes)+'_'+adicionar_zero(dia)+'.json' y.append((importar_tipo(url))['energiaDia']) return corrigir_variaveis(y)

#A FUNCAO ABAIXO PLOTA O GRÁFICO DE BARRAS. def plotar_barras(): mes = 4 x = range(1,dias_mes(mes)+1) y = captar_energia_mes(mes) barras.grafico(x,y,mes)

plotar_barras()

#******************************************************

elif mes == 6: return 'Junho'

def grafico(x, y,mes): plt.bar(x, y) plt.title('Energia gerada no mes de'+' '+mes_por_extenso(mes)) plt.xlabel('Dias') plt.ylabel('Energia gerada(kWh)') plt.savefig('barras.png') plt.close()

boxplot

import matplotlib.pyplot as plt

def grafico(x, y): plt.boxplot(y) plt.title('Potencia por mes ao longo de um semestre') plt.xlabel('Meses') plt.ylabel('Potencia mensal') plt.savefig('boxplot.png') plt.close()

linha

import matplotlib.pyplot as plt

def grafico(x, y): plt.plot(x, y) plt.xticks([12*i for i in range(1,17)], ['5:00','','7:00','','9:00','','11:00','','13:00','','15:00','',' :00','','19:00','','21:00']) plt.title('Variacao da potencia ao longo do dia') plt.xlabel('') plt.ylabel('Potencia(kW)') plt.savefig('linha.png') plt.close()