Você está na página 1de 27

FERRAMENTAS MATEMÁTICAS

APLICADAS
AULA 3

Prof. Ricardo Alexandre Deckmann Zanardini


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()

2
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()

3
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()

4
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()

5
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()

6
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 :

7
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')

8
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.

9
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)

10
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)

11
O gráfico é o mesmo, mas com as colunas mais estreitas do que as
obtidas anteriormente.
Também podemos 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)

12
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

13
“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

14
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)

15
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')

16
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()

17
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)

18
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)

19
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
import matplotlib.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)

20
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)

21
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)

22
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()

23
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)

24
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)

25
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.

26
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.

27

Você também pode gostar