Introdução à
MatPlotLib
Prof. Paulo R. G. Bordoni
UFRJ
Slide 2
Slide 2 text
A MatPlotLib será nossa ferramenta
para construir gráficos de funções.
Mas, antes de apresentá-la reavivaremos
a disputa Platão x Aristóteles.
Slide 3
Slide 3 text
“A criação de Adão”
Afresco pintado no teto da Capela
Sistina por Michelangelo
Buonarroti, entorno de 1511.
Vou começar pelo dito
popular:
“Uma imagem vale mais
que mil palavras.”
Slide 4
Slide 4 text
1637
René Descartes - Francês
Nasceu 31/03/1596
Morreu 11/02/1650
A formalização do método
científico, um século e um
quarto de depois...
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
Reducionismo:
estudo do mundo como uma
montagem de partes físicas que
podem ser divididas e analisadas
separadamente e recompostas.
Slide 7
Slide 7 text
M.C. Escher,
Relativity (1953),
Litogravura
Uma imagem vale muito mais que mil
palavras ...
Escher dividiu e depois remontou
tudo, harmonicamente, certamente
questionando o Reducionismo.
Slide 8
Slide 8 text
Escher remontou tudo,
harmonicamente, quem sabe
para mostrar que
“o todo pode ser maior que a
soma das partes”. Holismo ...
Slide 9
Slide 9 text
Descartes é do mundo das
ideias.
Onde entra a crítica de
Escher?
Imagens e gráficos são
entidades criadas pela nossa
percepção euclideana.
Slide 10
Slide 10 text
Mestre, Mestre ...
Eu faço engenharia, não
filosofia, nem história!
Pois é Surfista, Escher usa nossa
própria percepção visual para
desconstruir a confiança que
temos na percepção visual.
Slide 11
Slide 11 text
Mas Escher vai
mais além.
A próxima transparência
ensina que o que você vê
depende de como você olha
as coisas.
Slide 12
Slide 12 text
M.C. Escher,
Convex and Concave
(1955), Litogravura
Experimente olhar assim ↘, como a mulher
descendo com a cesta - canto esquerdo superior.
Depois, olhe assim ↖, como o operário subindo
a escada - canto direito inferior.
Slide 13
Slide 13 text
Olhar o todo permite detectar
contradições.
Use a Internet criteriosamente para
buscar mais informações, mas cuidado
com as “fake news”
Pode ser muito pior:
“O que você vê depende de como
te mostram as coisas”
É ou não é, Escher?
Slide 14
Slide 14 text
Isto já é história !
Quero ver nas eleições,
agora em 2.018.
Pensem nas imagens de
Escher quando virem essas
manchetes na imprensa
podre:
Slide 15
Slide 15 text
Foi você quem acabou de
protestar:
“ Eu faço engenharia ! ”
Fiquei convencido que votar envolverá
decisões sobre:
ética x política x educação (UFRJ) x
segurança x hospitais x ...
Slide 16
Slide 16 text
Surfista, veja mais sobre armadilhas da
percepção ao final deste conjunto de
transparências.
Depois volte a refletir sobre a disputa
Platão x Aristóteles.
Slide 17
Slide 17 text
Voltando ao ponto que nos interessa
no momento:
Descartes (1637) e Fermat (1636) amarraram
a Geometria de Euclides à Álgebra através do
conceito de sistema de coordenadas.
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
Pierre Fermat ...
Slide 20
Slide 20 text
Publicou 1º,
1684/1686
Descobriu antes,
1665/1666
Não deixem de ver no Youtube:
The Calculus Controversy.
Em particular Newton e Leibniz, criaram o
Cálculo Infinitesimal (a matemática do contínuo)
cerca de 50 anos depois Descartes e Fermat
parirem a Geometria Analítica.
Aliás é de Newton a frase: “Se enxerguei mais
longe é porque estava no ombro de gigantes.”
Slide 21
Slide 21 text
x
y
= (, )
x
z
y
= (, , )
A algebrização da geometria decorre da
possibilidade identificar pontos, tanto do
plano euclidiano ℝ2, como do espaço
euclidiano ℝ3, a pares , e ternas
(, , ) de números.
Slide 22
Slide 22 text
A partir dela, da geometria analítica, os
matemáticos passaram a poder descrever entes
geométricos como segmentos, retas, planos,
triângulos, seções cônicas (e outros lugares
geométricos), através da álgebra:
com equações e inequações.
Circunferência
Elipse
Parábola
Hipérbole
2 + 2 = 1
2 = 4
2
2
+
2
2
= 1
2
2
−
2
2
= 1
Slide 23
Slide 23 text
A utilização:
• do teorema de Pitágoras permite
calcular distância entre pontos.
• da trigonometria possibilita obter o
ângulo entre duas retas.
• da regra de Cramer permite obter o
ponto de interseção entre duas
retas.
= (
,
)
= (
,
)
Slide 24
Slide 24 text
Surfistas, Loirinhas e Cabelos de
Fogo, vou apresentar um roteiro para
vocês estudarem a MatPlotLIb.
Mais especificamente a PyPlot.
Slide 25
Slide 25 text
Surfista, comece abrindo
a Python(x,y) e nela a
Spyder.
Ah, agora vamos !
Slide 26
Slide 26 text
Uma forma de trabalhar interativamente
com nossas ferramentas é, na Spyder,
abrir um console IPython.
Veja como:
Slide 27
Slide 27 text
No console interativo,
repita o que indiquei:
Eu fiz isso, e
recebi este help
imenso !
Slide 28
Slide 28 text
Eis outra forma buscar a
documentação “online” da
MatPlotLib
Slide 29
Slide 29 text
E aqui estamos na
página dela:
Slide 30
Slide 30 text
A navegação é facílima.
Use previous ou next para
velejar.
Eis como a buscar
por palavra-chave:
Slide 31
Slide 31 text
Não Manuel, vamos direto
para pyplot !
Vou apresentar,
rapidamente, o que há em cada
uma das abas que marquei:
Slide 32
Slide 32 text
A sua
dúvida!
Slide 33
Slide 33 text
A Mestra mandou marcar
as funções da API que
iremos utilizar mais.
Slide 34
Slide 34 text
Vamos usá-las para
construir gráficos de
funções !
Slide 35
Slide 35 text
Os nomes são
bem descritivos.
Slide 36
Slide 36 text
A função plot é
básica !
Slide 37
Slide 37 text
Gráficos em
coordenadas
polares !
E em escala
logarítmica.
Slide 38
Slide 38 text
A MatPlotLib possui
muitas funções
facilitadoras !
Slide 39
Slide 39 text
Se não errei na
contagem, são 133
funções disponíveis !
Slide 40
Slide 40 text
Agora sim, vamos aos
tutoriais da MatPlotLib,
que te darão asas,
Surfista.
Este é o significado
de origem (em
Inglês) de tutor:
Slide 41
Slide 41 text
Claro que nosso 1º
passo será o tutorial
da PyPlot.
Slide 42
Slide 42 text
O início do tutorial e seu
conteúdo.
Vocês deverão estudá-lo
até o final Surfistas
Slide 43
Slide 43 text
O Mestre mandou
mostrar a galeria de
exemplos e marcar os que
veremos.
Slide 44
Slide 44 text
Vários exemplos (27 ao
todo) de uso da PyPlot.
Slide 45
Slide 45 text
Depois que se divertirem com o
tutorial da PyPlot, olhem o tutorial
de cores que marquei.
Slide 46
Slide 46 text
O início do tutorial de
especificação de cores.
Depois vejam os exemplos de
uso cores na aba examples.
Slide 47
Slide 47 text
Exemplos
envolvendo cores.
Slide 48
Slide 48 text
Duas tabelinhas
com cores básicas.
Slide 49
Slide 49 text
Uma tabela
com 148 cores
nomeadas:
Slide 50
Slide 50 text
Agora vou mostrar como
obteremos nossos gráficos,
usando a função plot.
Slide 51
Slide 51 text
Na API da pyplot,
clique em plot:
Slide 52
Slide 52 text
Ou, no console interativo,
após importar a
matplotlib.pyplot digite
help(plot):
Slide 53
Slide 53 text
Lista das
coordenadas x Lista das
coordenadas y
Vendo o help é fácil Manoel.
Usando a plot( ) desenhei um
segmento com extremidades nos
pontos
A = (2.1, 1.3) e B = (3.5, 2.7).
Slide 54
Slide 54 text
Muito fácil!
Para plotar 2 segmentos colados
um no outro criei duas listas com
as coordenadas x e y dos vértices:
Slide 55
Slide 55 text
Mas clicando no ícone do disquete
salvamos uma imagem sem a borda
cinza.
Eu prefiro assim!
Após a execução, a PyPlot abriu
uma janela mostrando uma
imagem com borda cinza, como
no slide anterior.
Slide 56
Slide 56 text
Construí o triângulo abaixo, com
dois comandos plot( ) e mais alguns
comandos de “embelezamento”.
Vejam o código e a imagem que o
Surfista prefere:
Slide 57
Slide 57 text
O que faz o comando da
linha 2, Mestre?
Ele permite utilizar
acentuação na imagem.
Vou analisar o resto do código
Loirinha.
Slide 58
Slide 58 text
• Em 12 plotamos os lados do triângulo,
usando uma linha contínua em azul e
indicamos um texto para a legenda,
• Em 13 plotamos os vértices com bolinhas
em vermelho, mais um texto para a
legenda,
• Em 14 deixamos a pyplot escolher a melhor
posição para posicionar a legenda,
• Em 15 definimos o título da figura,
• Em 16 e 17 rotulamos os eixos,
• Em 18 definimos um tamanho para o
gráfico.
Analisando a
parte gráfica:
Slide 59
Slide 59 text
Loirinha, passarei agora a
mostrar como a MatPlotLib
traça gráficos de funções.
Slide 60
Slide 60 text
Sim Mestre, como faremos
para traçar gráficos de
funções com a MatPlotLib?
Até que enfim algo
de Cálculo I !
Slide 61
Slide 61 text
Ora, simplesmente ligamos os
pontos
0
, 0
, 1
, 1
, ⋯ , (
,
),
com segmentos de reta, sendo
= (
).
O nome técnico da matemática para
isto é interpolação linear por partes!
Interpolação é um tópico importante
de nosso curso.
Slide 62
Slide 62 text
Depois:
• usamos a difusão para calcular os
valores
= (
),
• e passamos esse par de vetores para a
função plot( ).
Vejam na próxima transparência.
Operacionalmente:
• escolhemos o domínio [, ] para construir o
gráfico da função f
• e usamos a vetorização com a linspace( )
para gerar as coordenadas
.
Slide 63
Slide 63 text
Vejam, com o código à
frente geramos o gráfico
de uma função. Escolhi
↦ () = 2.
Slide 64
Slide 64 text
Mestre, não gostei!
Ficou muito ruim - uma parábola
cheia de quinas.
Grande Surfista!
Depois vou repetir
com mais pontos.
Ah, Coleguinha, é só
colocar mais pontos no
vetor !
Slide 65
Slide 65 text
Antes uma explicação sobre a
nomenclatura adotada pelos
Mestres.
Figura (substitui fig) é uma entidade
abstrata, não pré-definida (pode ser o
gráfico de uma função, um histograma, uma
foto, um mapa, etc.), que queremos colocar
no papel (substitui ax).
Slide 66
Slide 66 text
• Em 27 colocamos o título,
• Em 28 plotamos o gráfico da função,
• Em 29 e 30 criamos marcas para a, b ,
y_min e y_max,
• Em 31 e 32 colocamos os eixos x e y,
• Em 33-34 estabelecemos os limites do
papel.
Acompanhem mais
explicações abaixo:
Slide 67
Slide 67 text
Loirinha, acrescentei a linha de código
marcada em vermelho, acima.
Agora são 21 pontos, marcados em vermelho
e 20 sub-intervalos de mesmo tamanho
Δ = ( 2.0 − (−2.0))/20 = 0.2.
É Mestre, o aspecto
da parábola melhorou!
Slide 68
Slide 68 text
Que tal o gráfico da função
: [0,2] → ℝ definida por
= 2sin()
Loirinha ?
Slide 69
Slide 69 text
É o Escher em
ação, Mestra!
Observe que com muitos
pontos (51), percebemos
uma curva suave.
Slide 70
Slide 70 text
Vá em Search e
busque por marker.
Esqueci como pedir help
para esses detalhes
todos!
Slide 71
Slide 71 text
Pronto, a lista dos
marcadores disponíveis.
Slide 72
Slide 72 text
Uma outra forma é abrir
uma “Console IPython”
Slide 73
Slide 73 text
E proceder como
eu indico:
Mas usando a
“Search” é mais
prático!
Slide 74
Slide 74 text
Você também pode
pedir ajuda ao Google,
Loirinha:
Slide 75
Slide 75 text
Vou aproveitar para
estudar por minha conta!
Slide 76
Slide 76 text
Nesta parte não
há nada de novo.
Para desenhar o gráfico
de duas funções:
Slide 77
Slide 77 text
A única coisa nova é o
gráfico da função
: [, ] → ℝ em tracejado
e vermelho.
Slide 78
Slide 78 text
Loirinha, acompanhe na aula as minhas
explicações.
Vou repetir algumas já dadas no
gráfico do triângulo para fixação.
Slide 79
Slide 79 text
O programa a seguir
permite traçar
poligonais.
Neste programa
você usou fig e ax !
Slide 80
Slide 80 text
Ele permite escolher entre
alguns polígonos.
Modifique-o para traçar
polígonos regulares com N
lados Surfista.
Slide 81
Slide 81 text
É Mestra, posso escolher
entre um segmento e um
triângulo!
Slide 82
Slide 82 text
E também entre um
quadrilátero ou um
pentágono!
Slide 83
Slide 83 text
• Os comandos 42-47 definem o polígono (é preciso repetir
o 1º vértice para fechar o polígono),
• Nos comandos 49-54 calculamos o tamanho do gráfico
(definido na linha 66),
• O comando fill( ) na linha 59 pinta o interior do polígono,
• Os comandos xticks(...) e yticks(...) nas linhas 62 e 63
plotam os valores passados coord_x e coord_y,
• O comando grid(True) traça as linhas pontilhadas
horizontais e verticais pelos “ticks”,
• Os comandos 64 e 65 traçam os eixos x e y.
Meus pupilos, vejam
alguns comentários
sobre o código:
Slide 84
Slide 84 text
Agora vou mostrar como traçar
gráficos 3D.
Slide 85
Slide 85 text
O “kit” de ferramentas é último
conjunto de tutoriais.
É nele que está a caixa de
ferramentas para gráficos 3D.
Slide 86
Slide 86 text
O início do mplot3d e seu
conteúdo.
Vejam a seguir a galeria
com 36 exemplos.
Slide 87
Slide 87 text
Este é apenas início dos
gráficos 3D da galeria.
Slide 88
Slide 88 text
Eis como desenhar um
gráfico aramado em 3D
Slide 89
Slide 89 text
Este programa traça
um gráfico aramado de
uma superfície 3D.
Slide 90
Slide 90 text
O gráfico aramado da
superfície que criamos com o
código da página anterior,
visto de 3 ângulos distintos:
Slide 91
Slide 91 text
Agora vamos desenhar o
gráfico de uma superfície
3d, usando o surface plots:
Slide 92
Slide 92 text
A continuação do
surface plots:
Slide 93
Slide 93 text
Um programa
usando
plot_surface( )
• Em 11 importamos Axes3D para
poder construir gráficos
tridimensionais,
• Em 12 importamos a classe cm de
mapear cores.
• Em 14 criamos imagem para
receber, em 15, um quadro onde
desenhar.
Slide 94
Slide 94 text
A continuação do
programa:
• Em 57, criamos superf_3D, o gráfico da
função f(x, y) no domínio [a,b]x[c,d],
• Em criamos uma escala colorida para
descrever a variação da função,
• Em 50-52 estabelecemos os limites da
caixa retangular onde o gráfico é
traçado,
• Em 53-55 damos nomes a alguns bois.
Slide 95
Slide 95 text
A superfície que criamos
com esse programa, vista
de 2 ângulos distintos:
Slide 96
Slide 96 text
Uma outra superfície, com
aramado, vista de três
ângulos distintos
Slide 97
Slide 97 text
Mestre, você superpôs
a superfície com o
aramado ?
Não, apenas mudei
linewidth=0 para 1 no
código.
Slide 98
Slide 98 text
Fiz um programa para desenhar curvas de
nível.
É igualzinho ao 3D_superfície e usei os
mesmos dados. Só troquei as linhas 57-59
por estas duas:
Slide 99
Slide 99 text
Tchau, até a
próxima aula!
Slide 100
Slide 100 text
A matemática é platônica ou
aristotélica?
Que armadilhas a visualização
nos apresenta?
Slide 101
Slide 101 text
Ilusão induzida
pelo claro/escuro .
http://www2.uol.com.br/vivermente/
multimidia/galeria_de_ilusoes.html
Comece olhando pelo balcão
superior. Depois desça ao
pátio pela corda.
Em seguida, suba pela
escada.
Slide 102
Slide 102 text
Pois é, são armadilhas de percepção.
Esta revista mostra algumas. Escher,
desenhou muitas outras.
Elas envolvem o famoso “tribar” de
Sir Roger Penrose.
Slide 103
Slide 103 text
O “tribar” é uma criação do
pensamento para confundir a
percepção Sir Roger
Penrose?
Slide 104
Slide 104 text
M.C. Escher,
Waterfall (1961), Litogravura
Descubram os tribar!
E as torres: mesma altura
mas quantos andares?
Slide 105
Slide 105 text
M.C. Escher,
Belvedere (1958), Litogravura
Descubram os tribar.
O quê o homem sentado no
banco segura?
Slide 106
Slide 106 text
Mauritius Cornelius Escher,
holandês.
Nasceu em 17/06/1898
Morreu em 27/03/1972
Este é o artista genial que
construiu as litogravuras que
mostramos.
Surfista, procure na internet para
ver muito mais!
Slide 107
Slide 107 text
“Cogito,
ergo sum”
The Discourse on Method is best known as the
source of the famous quotation "Je pense,
donc je suis" ("I think, therefore I am"), which
occurs in Part IV of the work. (The similar
statement in Latin, Cogito ergo sum, is found in
§7 of Principles of Philosophy.)
Slide 108
Slide 108 text
Sigmund Freud
Nasceu 06/05/1856
Morreu 23/09/1939
"The great question that has never been answered,
and which I have not yet been able to answer,
despite my thirty years of research into the feminine
soul, is 'What does a woman want?'"
From Sigmund Freud: Life and Work by Ernest Jones
O criador da Psicanálise.
Aprendi nesse divã que
“sinto, logo sou”
Slide 109
Slide 109 text
Nasceu em o8/o8/1932,
na Inglaterra
Sir, a consciência é mesmo
o resultado de interações
quânticas dentro dos
neurônios?
Slide 110
Slide 110 text
Pierre Fermat é
famoso também pelo
“Último Teorema de
Fermat”
Slide 111
Slide 111 text
Tradução para o latin
de 1575, por Wilhelm
Xylander.
Diofanto de Alexandria foi, talvez, o
primeiro matemático a usar símbolos
para incógnitas, em sua Aritmética,
~250 dC.
Ele é considerado um dos pais da
álgebra.
Tradução para o latin
de 1621, por Bachet
de Méziriac
Slide 112
Slide 112 text
A edição de 1670 da Aritmética, pelo
filho de Fermat, com uma chamando a
atenção sobre a observação do pai.
Slide 113
Slide 113 text
O Último Teorema de Fermat, foi provado
por Andrew Wiles,358 anos depois que foi
conjecturado.
Slide 114
Slide 114 text
Os dois artigos foram aceitos e publicados como na
totalidade na edição de maio de 1995 do Annals of
Mathematics. Estas publicações estabeleceram o teorema
de modularidade para curvas elípticas semi-estáveis, o
último passo para provar o teorema.
Com base na obra de Ken Ribet, Andrew Wiles
conseguiu provar o suficiente do teorema de
modularidade para provar o Último Teorema de Fermat,
com a ajuda de Richard Taylor. Esta realização de
Wiles foi noticiado amplamente na imprensa popular, e
foi popularizada em livros e programas de televisão.