Baixe o app para aproveitar ainda mais
Prévia do material em texto
FERRAMENTAS MATEMÁTICAS APLICADAS AULA 3 Prof. Ricardo Alexandre Deckmann Zanardini 2 CONVERSA INICIAL Nesta aula, vamos avançar nos estudos referentes aos gráficos. Aprenderemos a construir diferentes tipos de gráficos bidimensionais e tridimensionais e aprenderemos também a editar parâmetros, alterar configurações e salvar as imagens geradas pelo Python. Veremos como é possível construir gráficos de linha, de barras de pizza e muito mais. TEMA 1 – GRÁFICOS DE LINHA Em Python, há diversas bibliotecas destinadas à construção de gráficos. Vamos utilizar a biblioteca “matplotlib”, que possui diversos recursos e várias formas de exibição de gráficos. Para importarmos a biblioteca, basta utilizarmos a expressão “import matplotlib.pyplot as plt” Com base no exemplo a seguir, veremos como construir um gráfico que apresenta alguns meses e os respectivos níveis de produção e, em seguida, aprenderemos a colocar título, alterar cores, parâmetros, tipo de linha e mais. Exemplo 1 Uma empresa desenvolveu um aplicativo de finanças pessoais e o número de downloads em cada um dos cinco primeiros meses é apresentado a seguir. Tabela 1 – Número de downloads de uma determinada empresa Mês Maio Junho Julho Agosto Setembro Downloads 120000 98000 82000 105000 180000 Faça um gráfico, por meio do Python, apresentando o total de downloads de cada mês. Resolução: import matplotlib.pyplot as plt x=['Maio', 'Junho', 'Julho', 'Agosto', 'Setembro'] y=[120000, 98000, 82000, 105000, 180000] plt.plot(x,y) plt.show() 3 Figura 1 – Construção de gráfico pelo Python – Total de downloads de maio a setembro (1) Observe que podemos atribuir os meses, entre aspas, a cada componente do vetor “x” e os respectivos níveis de produção às componentes do vetor “y”. Utilizando o comando “plt.plot(x, y)”, temos a construção do gráfico. Dessa maneira, o gráfico é facilmente obtido, mas há alguns detalhes que podem ser melhorados. O primeiro deles é a variação que ocorre no eixo y. O valor inicial é 82000 e o valor final 180000. E se quisermos que os valores no eixo y variem de 0 a 190000? Basta fazermos “plt.ylim(0, 190000)”. O comando “plt.ylim” define o limite inferior e o limite superior do eixo y. Sendo assim, temos: import matplotlib.pyplot as plt x=['Maio', 'Junho', 'Julho', 'Agosto', 'Setembro'] y=[120000, 98000, 82000, 105000, 180000] plt.plot(x,y) plt.ylim(0, 190000) plt.show() 4 Figura 2 – Construção de gráfico pelo Python – Total de downloads de maio a setembro (2) Observe que agora o gráfico está em um sistema de eixos coordenados em que o eixo y varia de 0 a 190000. Podemos adicionar um título ao gráfico por meio do comando “plt.title()”. O texto no eixo x é dado por “plt.xlabel()” e no eixo y por “plt.ylabel()”: import matplotlib.pyplot as plt x=['Maio', 'Junho', 'Julho', 'Agosto', 'Setembro'] y=[120000, 98000, 82000, 105000, 180000] plt.plot(x,y) plt.ylim(0, 190000) plt.title('Downloads de maio a setembro') plt.xlabel('Mês') plt.ylabel('Downloads') plt.show() 5 Figura 3 – Construção de gráfico pelo Python – Total de downloads de maio a setembro (3) Além da linha cheia, podemos utilizar outros tipos de linhas ou outros tipos de marcadores para a construção de gráficos. A seguir, veremos que o comando “plt.plot(x,y,'r o')” plota um gráfico com círculos vermelhos: import matplotlib.pyplot as plt x=['Maio', 'Junho', 'Julho', 'Agosto', 'Setembro'] y=[120000, 98000, 82000, 105000, 180000] plt.plot(x,y, 'r o') plt.ylim(0, 190000) plt.title('Downloads de maio a setembro') plt.xlabel('Mês') plt.ylabel('Downloads') plt.show() 6 Figura 4 – Construção de gráfico pelo Python – Total de downloads de maio a setembro (4) Também é possível construir um gráfico com linhas e círculos vermelhos. Para isso, utilizaremos duas vezes o comando “plt.plot()”: import matplotlib.pyplot as plt import matplotlib.pyplot as plt x=['Maio', 'Junho', 'Julho', 'Agosto', 'Setembro'] y=[120000, 98000, 82000, 105000, 180000] plt.plot(x,y) plt.plot(x,y, 'r o') plt.ylim(0, 190000) plt.title('Downloads de maio a setembro') plt.xlabel('Mês') plt.ylabel('Downloads') plt.show() 7 Figura 5 – Construção de gráfico pelo Python – Total de downloads de maio a setembro (5) A seguir, temos os caracteres para as cores, tipos de linhas e marcadores: Tabela 2 – Lista de caracteres para as cores, tipos de linhas e marcadores Cor Caractere Amarelo y Azul b Branco w Ciano c Magenta m Preto k Verde g Vermelho r Linha Caractere Cheia - Pontilhada : 8 Tracejada -- Traço-ponto -. Marcador Caractere Ponto . Pixel , Círculo o Triângulo v Triângulo ^ Triângulo < Triângulo > Y para baixo 1 Y para cima 2 Y para a esquerda 3 Y para a direita 4 Quadrado s Pentágono p Estrela * Hexágono h Hexágono H Sinal de adição + Sinal de multiplicação x Losango largo D Losango estreito d Linha vertical | Linha horizontal _ Se quisermos, podemos especificar a largura da linha, atribuindo um valor ao parâmetro “linewidth” dentro do comando “plt.plot()”: import matplotlib.pyplot as plt x=['Maio', 'Junho', 'Julho', 'Agosto', 'Setembro'] y=[120000, 98000, 82000, 105000, 180000] plt.plot(x,y,'r', linewidth=3) plt.ylim(0, 190000) plt.title('Downloads de maio a setembro') plt.xlabel('Mês') 9 plt.ylabel('Downloads') plt.show() Figura 6 – Construção de gráfico pelo Python – Total de downloads de maio a setembro (6) Fonte: Elaborado pelo autor. Para salvar o gráfico gerado pelo Python, o comando é “plt.savefig('NomeDaFigura.png')”. Utilizando o Microsoft Azure Notebooks também é possível copiar a figura e colar essa figura no texto quando estamos utilizando o modo “Markdown”. A seguir, veremos como é possível construirmos gráficos de barras. TEMA 2 – GRÁFICOS DE BARRAS Assim como os gráficos de linhas, também podemos utilizar o Python para construirmos de um jeito fácil gráficos de barras. O comando é “plt.bar()”. Vamos acompanhar o seguinte exemplo. 10 Exemplo 1 Na tabela a seguir, são apresentados os números de afastamentos por acidente de trabalho nos primeiros cinco anos de existência de uma determinada empresa. Tabela 3 – Número de afastamentos por acidente de trabalho numa determinada empresa Ano 2014 2015 2016 2017 2018 Acidentes 7 2 5 4 1 Faça um gráfico de barras relacionado a esses dados. Resolução: import matplotlib.pyplot as plt x=['2014', '2015', '2016', '2017', '2018'] y=[7, 2, 5, 4, 1] plt.bar(x,y) plt.title('Afastamentos por acidente') plt.xlabel('Ano') plt.ylabel('Acidentes') plt.show() Figura 7 – Construção de gráfico pelo Python – Total de afastamentos por acidentes (1) 11 Nesse exemplo, com base nos vetores “x” e “y” e no comando “plt.bar(x,y)”, foi possível construirmos o gráfico de barras. Os comandos “plt.title(' Afastamentos por acidente')”, “plt.xlabel('Ano')” e “plt.ylabel('Acidentes')” foram utilizados para a inserção do título e dos textos referentes aos eixos x e y. A largura das colunas pode ser alterada acrescentando-se o valor no comando “plt.bar(x,y,largura)”. Atribuímos o valor 0,5 à variável “largura”, mas esse valor pode ser colocado diretamente após os termos “x” e “y”: “plt.bar(x,y,0.5)”: import matplotlib.pyplot as plt x=['2014', '2015', '2016', '2017', '2018'] y=[7, 2, 5, 4, 1] largura=0.5 plt.bar(x,y,largura) plt.title('Afastamentos por acidente') plt.xlabel('Ano') plt.ylabel('Acidentes') plt.show() Figura 8 – Construção de gráfico pelo Python – Total de afastamentos por acidentes (2) 12 O gráfico é o mesmo, mas com as colunas mais estreitas do que as obtidas anteriormente. Tambémpodemos plotar as barras na horizontal utilizando o comando “plt.barh()”. É importante ressaltar que agora o texto referente ao eixo x é “plt.xlabel('Acidentes')” e o referente ao eixo y é “plt.ylabel('Ano')”. import matplotlib.pyplot as plt x=['2014', '2015', '2016', '2017', '2018'] y=[7, 2, 5, 4, 1] largura=0.5 plt.barh(x,y,largura) plt.title('Afastamentos por acidente') plt.xlabel('Acidentes') plt.ylabel('Ano') plt.show() Figura 9 – Construção de gráfico pelo Python – Total de afastamentos por acidentes (3) 13 E se for preciso plotar um gráfico de barras agrupadas, ou seja, um gráfico em que tivermos a representação de mais do que uma variável dependente no mesmo sistema e eixos coordenados? É possível utilizarmos o Python para gráficos desse tipo. O detalhe é que teremos que deslocar a representação de cada grupo de barras para evitar que elas fiquem sobrepostas. Vamos acompanhar um exemplo para entendermos melhor o que precisamos fazer. Exemplo 2 Na tabela a seguir, é apresentado o número de afastamentos por acidente de trabalho e os afastamentos por doença nos primeiros cinco anos de existência de uma determinada empresa. Tabela 4 – Número de afastamentos por acidente de trabalho e de afastamentos por doença nos primeiros cinco anos de existência de uma determinada empresa Ano 2014 2015 2016 2017 2018 Acidentes 7 2 5 4 1 Doenças 32 21 17 22 13 Faça um gráfico de barras relacionado a esses dados. Resolução: Vamos precisar criar um vetor que iremos denominar de “ano” para armazenarmos os anos de 2014 a 2018 e, em seguida, utilizaremos o comando “np.arrange(5)” da biblioteca NumPy para criarmos cinco valores igualmente espaçados. O número “5” está associado ao total de anos (de 2014 a 2018, temos um total de cinco anos). Esse procedimento é importante, pois para plotarmos o segundo grupo de barras, será preciso fazer o deslocamento dessas barras somando um valor às componentes de “x”. Quando utilizamos números, a soma é possível, mas não seria possível efetuar essa soma com sequências de caracteres (meses, por exemplo). Esse deslocamento é feito somando a variável “largura” às componentes do vetor “x”: “plt.bar(x+largura, y2, largura, color='c')”. O comando “plt.xticks(x, ano)” escreve no eixo x o ano para cada respectivo valor pertencente ao vetor “x”. Como temos dois grupos de barras, adicionamos uma legenda ao gráfico utilizando o comando 14 “plt.legend(['Acidentes', 'Doenças'], loc=1)” em que o parâmetro “loc” especifica a localização das legendas. O número “1” indica o canto superior direito. import matplotlib.pyplot as plt import numpy as np ano=['2014', '2015', '2016', '2017', '2018'] x=np.arange(5) y1=[7, 2, 5, 4, 1] y2=[32, 21, 17, 22, 13] largura=0.3 plt.bar(x, y1, largura, color='r') plt.bar(x+largura, y2, largura, color='c') plt.xticks(x, ano) plt.title('Afastamentos por acidentes e por doenças') plt.xlabel('Ano') plt.ylabel('Afastamentos') plt.legend(['Acidentes', 'Doenças'], loc=1) plt.show() Figura 10 – Construção de gráfico pelo Python – Total de afastamentos por acidentes e por doenças em uma determinada empresa 15 TEMA 3 – GRÁFICOS DE PIZZA Também é possível construirmos gráficos de pizza, também conhecidos como gráficos de torta (pie). Vamos acompanhar a resolução de um exemplo em que abordaremos detalhes importantes relacionados a esse tipo de gráfico. Exemplo 1 Em um período de 12 meses, uma imobiliária vendeu 132 apartamentos de 1 quarto, 89 apartamentos de 2 quartos e 115 apartamentos de 3 quartos. Faça um gráfico de pizza que representa as vendas dessa imobiliária. Resolução: Para construirmos um gráfico de pizza, utilizaremos o comando “plt.pie(x)”. Em particular, acrescentaremos ainda o parâmetro “label” para que tenhamos a exibição dos números de quartos relacionados a cada parte do gráfico: “plt.pie(x,labels=cursos)”. Observe que os termos associados aos números de quartos estão armazenados no vetor “quartos”. Para que a representação fique precisa, é importante que os eixos x e y tenham as mesmas proporções. Isso é feito com o comando “plt.axis('equal')”. import matplotlib.pyplot as plt x=[132, 89, 115] quartos=['1 quarto', '2 quartos', '3 quartos'] plt.axis('equal') plt.pie(x,labels=quartos) plt.title('Vendas dos apartamentos') plt.show() Figura 11 – Gráfico de pizza representando as vendas de apartamentos de uma imobiliária (1) 16 Podemos adicionar as respectivas porcentagens por meio do parâmetro “autopct”: import matplotlib.pyplot as plt x=[132, 89, 115] quartos=['1 quarto', '2 quartos', '3 quartos'] plt.axis('equal') plt.pie(x,labels=quartos,autopct='%1.1f%%') plt.title('Vendas dos apartamentos') plt.show() Figura 12 – Gráfico de pizza representando as vendas de apartamentos de uma imobiliária (2) Também é possível adicionar cores e sombra no gráfico. As cores são definidas pelo parâmetro “colors” e a sombra pelo parâmetro “shadow”: import matplotlib.pyplot as plt x=[132, 89, 115] quartos=['1 quarto', '2 quartos', '3 quartos'] cores=['r', 'm', 'y'] plt.axis('equal') plt.pie(x,labels=quartos, colors=cores, shadow=True, autopct='%1.1f%%') plt.title('Vendas dos apartamentos') 17 plt.show() Figura 13 – Gráfico de pizza representando as vendas de apartamentos de uma imobiliária (3) Também é possível dar um destaque a uma ou mais partes do gráfico utilizando o parâmetro “explode” e definindo os tamanhos dos afastamentos de cada parte do gráfico: import matplotlib.pyplot as plt x=[132, 89, 115] quartos=['1 quarto', '2 quartos', '3 quartos'] cores=['r', 'm', 'y'] plt.axis('equal') plt.pie(x,labels=quartos, colors=cores, shadow=True, explode=(0.1, 0, 0), autopct='%1.1f%%') plt.title('Vendas dos apartamentos') plt.show() 18 Figura 14 – Gráfico de pizza representando as vendas de apartamentos de uma imobiliária (4) TEMA 4 – FIGURAS GEOMÉTRICAS Além dos gráficos de linhas, de barras ou de pizza, muitas vezes precisamos construir figuras geométricas para que possamos fazer representações e atingir nossos objetivos. Inicialmente, vamos ver como podemos construir retângulos. Será necessário importar a biblioteca “matplotlib.patches”. Também é preciso criar uma figura (fig=plt.figure()) para depois construirmos o retângulo. No exemplo a seguir veremos esses detalhes. Exemplo 1 Construa um retângulo azul com base igual a 4, altura igual a 8 e canto inferior direito no ponto P de coordenadas (3, 0). Resolução: import matplotlib.pyplot as plt import matplotlib.patches as patches fig=plt.figure() fig1=fig.add_subplot(111, aspect='equal') fig1.add_patch (patches.Rectangle((3, 0), 4, 8, color='blue')) plt.ylim(0,12) 19 plt.xlim(0,12) Figura 15 – Gráfico com figuras geométricas (1) Também podemos construir mais do que um retângulo na mesma figura. Exemplo 2 Construa um retângulo verde com base igual a 2, altura igual a 7 e canto inferior esquerdo no ponto A (2, 0) e na mesma figura um retângulo vermelho com base igual a 2 unidades, altura igual a 8 unidades e canto inferior esquerdo no ponto B (4, 0). Resolução: import matplotlib.pyplot as plt import matplotlib.patches as patches fig=plt.figure() fig1=fig.add_subplot(111, aspect='equal') fig1.add_patch (patches.Rectangle((2, 0), 2, 7, color='green')) fig1.add_patch (patches.Rectangle((4, 0), 2, 8, color='red')) plt.ylim(0,10) plt.xlim(0,10) 20 Figura 16 – Gráfico com figuras geométricas (2) Para obtermos um círculo, o procedimento segue o mesmo princípio da representação de um retângulo, mas agora precisamos utilizar o comando “patches.Circle()”. Exemplo 3 Obtenha um círculo vermelho com centro em C(5, 5) e raio igual a 4. Resolução: import matplotlib.pyplot as plt importmatplotlib.patches as patches fig=plt.figure() fig1=fig.add_subplot(111, aspect='equal') fig1.add_patch (patches.Circle((5,5), 4, color='red')) plt.ylim(0,12) plt.xlim(0,12) 21 Figura 17 – Gráfico com figuras geométricas (3) O círculo é um caso particular da elipse cuja representação é feita mediante o comando “patches.Ellipse()” em que, além das coordenadas do centro, precisamos informar o diâmetro horizontal e o diâmetro vertical. No exemplo a seguir, veremos como é possível desenhar uma elipse utilizando o Python. Exemplo 4 Obtenha uma elipse verde com centro em C (2, 3), diâmetro horizontal igual a 6 e diâmetro vertical igual a 4. Resolução: import matplotlib.pyplot as plt import matplotlib.patches as patches fig=plt.figure() fig1=fig.add_subplot(111, aspect='equal') fig1.add_patch (patches.Ellipse((2,3), 6, 4, color='green')) plt.ylim(0,8) plt.xlim(-3,8) 22 Figura 18 – Gráfico com figuras geométricas (4) TEMA 5 – GRÁFICOS TRIDIMENSIONAIS Gráficos tridimensionais também podem ser feitos por meio de comandos existentes na biblioteca matplotlib. Veremos exemplos de diferentes representações de gráficos tridimensionais. A sequência de comandos a seguir tem como objetivo criar um sistema tridimensional de eixos cartesianos: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig=plt.figure() ax=plt.axes(projection='3d') Figura 19 – Gráfico tridimensional (1) 23 Essa criação é importante para que possamos fazer as representações tridimensionais. Um gráfico de superfície é gerado com base na seguinte sequência de passos: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np x=np.linspace(-5,5,100) y=np.linspace(-5,5,100) X,Y=np.meshgrid(x,y) Z=X**2+Y**2 fig=plt.figure() ax=plt.axes(projection='3d') ax.plot_surface(X,Y,Z) Figura 20 – Gráfico tridimensional (2) Também podemos representar em um ambiente tridimensional gráficos de linha: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np fig=plt.figure() 24 ax=plt.axes(projection='3d') Z=np.linspace(0, 15, 1000) X=np.sin(Z) Y=np.cos(Z) ax.plot3D(X,Y,Z,'red') Figura 21 – Gráfico tridimensional (3) Uma superfície aramada pode ser obtida com o uso do comando “plot_wireframe()”: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np x=np.linspace(-5,5,100) y=np.linspace(-5,5,100) X,Y=np.meshgrid(x,y) Z=X**2+Y**2 fig=plt.figure() ax=plt.axes(projection='3d') ax.plot_wireframe(X,Y,Z) 25 Figura 22 – Gráfico tridimensional (4) Também é possível plotar curvas de nível: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np x=np.linspace(-5,5,100) y=np.linspace(-5,5,100) X,Y=np.meshgrid(x,y) Z=X**2+Y**2 fig=plt.figure() ax=plt.axes(projection='3d') ax.contour3D(X,Y,Z,15) Figura 23 – Gráfico tridimensional (5) 26 FINALIZANDO Nesta aula, aprendemos a fazer gráficos de linha, de barras, de pizza e alterar diversos parâmetros. Também aprendemos a construir figuras geométricas em Python e a construirmos diversos tipos de gráficos tridimensionais. Mais adiante, estudaremos derivadas e integrais. Aprenderemos a resolver problemas de máximos e mínimos, calcular áreas e a resolver diversos problemas práticos relacionados. 27 REFERÊNCIAS CASTANHEIRA, N. P. Matemática aplicada. 3. ed. Curitiba: Ibpex, 2010. DEMANA, F. D. et al. Pré-cálculo. 2. ed, São Paulo: Pearson, 2013. FLEMING, D. M.; GONÇALVES, M. B. Cálculo A: função de uma variável. 2. ed. São Paulo: Pearson, 2007. PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento de aplicações. Rio de Janeiro: LTC, 2016.
Compartilhar