introdução à Matplotl
17 Nov, 2023
Introdução
Matplot é uma coleção de funções que fazem o matplotlib funcionar como o MATLAB. Cada função pyplot
faz alguma alteração em uma figura: por exemplo, cria uma figura, cria uma área de plotagem em uma
figura, plota algumas linhas em uma área de plotagem, decora a área com rótulos (lebels), etc.
A geração de visualizações com matplotlib é muito rápida:
import [Link] as plt
[Link]([1, 2, 3, 4])
[Link]('alguns números')
[Link]()
4.0
3.5
3.0
alguns números
2.5
2.0
1.5
1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0
Observe que o eixo x varia de 0-3 e o eixo y de 1-4. Se você fornecer uma única lista ou matriz para
[Link], matplotlib assumirá que é uma sequência de valores y e gerará automaticamente os valores x.
1
Como os intervalos python começam com 0, o vetor x padrão tem o mesmo comprimento que y, mas começa
com 0; Portanto, os dados X são [0, 1, 2, 3].
[Link] é uma função versátil, e terá um número arbitrário de argumentos. Por exemplo, para plotar
x versus y, podemos escrever:
[Link]([1, 2, 3, 4], [1, 4, 9, 16])
[Link]()
16
14
12
10
8
6
4
2
1.0 1.5 2.0 2.5 3.0 3.5 4.0
Formatando o estilo do gráfico
Para cada par de argumentos x, y, há um terceiro argumento opcional que é a cadeia de caracteres de formato
que indica a cor e o tipo de linha do gráfico. A cadeia de caracteres de formato padrão é ‘b-’, que é
uma linha azul sólida. Por exemplo, para plotar o acima com círculos vermelhos, pode-se escrever:
[Link]([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
[Link]((0,6,0,20)) # define eixo x (0,6), e eixi y (0,20)
## (0.0, 6.0, 0.0, 20.0)
[Link]()
2
20.0
17.5
15.0
12.5
10.0
7.5
5.0
2.5
0.0
0 1 2 3 4 5 6
3
Exemplo abaixo ilustra a plotagem de várias linhas com estilos de formato diferentes em uma chamada de
função.
import numpy as np
# tempo amostrado uniformemente em intervalos de 200 ms
t = [Link](0., 5., 0.2)
# traços vermelhos, quadrados azuis e triângulos verdes
[Link](t, t, 'r--', t, t**2, 'bs', t, t**3, 'gˆ')
[Link]()
100
80
60
40
20
0
0 1 2 3 4 5
4
Plotagem com cadeias de caracteres de palavra-chave
Há alguns casos em que você tem dados em um formato que permite acessar variáveis específicas com cadeias
de caracteres. Por exemplo, com structured vetor ou [Link].
data = {'a': [Link](50),
'c': [Link](0, 50, 50),
'd': [Link](50)}
data['b'] = data['a'] + 10 * [Link](50)
data['d'] = [Link](data['d']) * 100
[Link]('a', 'b', c='c', s='d', data=data)
[Link]('entrada a')
[Link]('enrada b')
[Link]()
50
40
30
enrada b
20
10
10
0 10 20 30 40 50
entrada a
5
Plotagem com variáveis categóricas
Também é possível criar um gráfico usando variáveis categóricas. Matplotlib permite que você passe variáveis
categóricas diretamente para muitas funções de plotagem. Por exemplo:
names = ['group_a', 'group_b', 'group_c'] # nome grupo
values = [1, 10, 100] # valor
[Link](figsize=(9, 3)) # definir tanhao figura
[Link](131) # define impresao primer sub grafico
[Link](names, values) # grafica grfico de bar
[Link](132) # define impresao segundo sub grafico
[Link](names, values) # grafico de pontos
[Link](133)
[Link](names, values) # grafico de linha
[Link]('Grafico de variável categoricas') # defini nome do titulo grafico
[Link]()
Grafico de variável categoricas
100 100 100
80 80 80
60 60 60
40 40 40
20 20 20
0 0 0
group_a group_b group_c group_a group_b group_c group_a group_b group_c
6
Trabalhando com múltiplas figuras e eixos
Tenha o conceito da figura atual e dos eixos atuais. Todas as funções de plotagem se aplicam aos eixos
atuais.
def f(t):
return [Link](-t) * [Link](2*[Link]*t)
t1 = [Link](0.0,5.0,0.1)
t2 = [Link](0.0,5.0,0.02)
[Link]()
[Link](211)
[Link](t1, f(t1), 'bo', t2, f(t2), 'k')
[Link](212)
[Link](t2, [Link](2*[Link]*t2), 'r--')
[Link]()
1.0
0.5
0.0
0.5
0 1 2 3 4 5
1.0
0.5
0.0
0.5
1.0
0 1 2 3 4 5
7
Trabalhando com texto
[Link] pode ser usado para adicionar texto em um local arbitrário, e [Link], [Link]
e .[Link] são usados para adicionar texto nos locais indicados.
mu, sigma = 100, 15 # define variáveis mu e sigms
x = mu + sigma * [Link](10000)
# o histograma dos dados
n, bins, patches = [Link](x, 50, density=True, facecolor='g', alpha=0.75)
[Link]('Inteligência')
[Link]('Probabilidade')
[Link]('Histogram of IQ')
[Link](60, .025, r'$\mu=100,\ \sigma=15$')
[Link]([40, 160, 0, 0.03])
## (40.0, 160.0, 0.0, 0.03)
[Link](True)
[Link]()
Histogram of IQ
0.030
0.025 = 100, = 15
0.020
Probabilidade
0.015
0.010
0.005
0.000
40 60 80 100 120 140 160
Inteligência
8
Eixos logarítmicos e outros eixos não lineares
[Link] suporta não apenas escalas de eixos lineares, mas também escalas logarítmicas e logit. Isso
é comumente usado se os dados abrangem muitas ordens de magnitude. Alterar a escala de um eixo é fácil:
[Link](‘log’)
Um exemplo de quatro gráficos com os mesmos dados e escalas diferentes para o eixo y é mostrado abaixo
# semente aleatório para reprodutibilidade
[Link](19680801)
# inventar algunos datos en el intervalo abierto (0, 1)
y = [Link](loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
[Link]()
x = [Link](len(y))
# plot con varias escalas de eixos
[Link]()
# linear
[Link](221)
[Link](x, y)
[Link]('linear')
[Link]('linear')
[Link](True)
# log
[Link](222)
[Link](x, y)
[Link]('log')
[Link]('log')
[Link](True)
# symmetric log
[Link](223)
[Link](x, y - [Link]())
[Link]('symlog', linthresh=0.01)
[Link]('symlog')
[Link](True)
# logit
[Link](224)
[Link](x, y)
[Link]('logit')
[Link]('logit')
[Link](True)
#Ajuste o subplot, pois o logit pode ocupar mais espaço
# o que o normal, devido a rótulos y-tick como "1 - 10ˆ{-3}"
plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25,
wspace=0.35)
[Link]()
9
linear log
1.0 100
0.8
0.6 10 1
0.4
0.2 10 2
0.0
0 200 400 600 800 0 200 400 600 800
symlog logit
10 1 1 10 3
10 2 1 10 2
0 1 10 1
1
2
10 2
10 1
10 1
10 2
0 200 400 600 800 0 200 400 600 800
10
Histograma
O gráfico mais comum para exibir distribuições de frequência é um histograma. Para criar um histograma,
a primeira etapa é criar um compartimento de intervalos, distribuir todo o intervalo de valor em séries de
intervalos e contar o valor que cairá no intervalo determinado. Podemos usar a função [Link]() para plotar
os histogramas que tomarão vários argumentos como dados, bin, cor, etc.
#desenhar amostras aleatórias de distribuições aleatórias
x = [Link](170, 10, 250)
#plot histograms
[Link](x)
[Link]()
50
40
30
20
10
0
150 160 170 180 190 200
11
Bar Plot
Principalmente o gráfico de barras é usado para mostrar a relação entre os valores numéricos e categóricos.
Em um gráfico de barras, temos um eixo representando uma determinada categoria das colunas e outro eixo
representando os valores ou contagem da categoria específica. Os gráficos de barras são plotados vertical e
horizontalmente e são plotados usando a seguinte linha de código:
[Link](x,height,width,bottom,align) exemplo
#define array
data= [5. , 25. , 50. , 20.]
[Link](range(len(data)), data,color='c')
[Link]()
50
40
30
20
10
0
0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5
12
Gráfico de dispersão
Os gráficos de dispersão são usados para mostrar as relações entre as variáveis e usam os pontos para
a plotagem ou para mostrar a relação entre duas variáveis numéricas.O método scatter() é usado para
plotagem.
#cria x e y axis
x = [Link]([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = [Link]([99,86,87,88,111,86,103,87,94,78,77,85,86])
[Link](x, y)
[Link]()
110
105
100
95
90
85
80
2 4 6 8 10 12 14 16
13
Grafico de caixa e bigode
Um gráfico de caixa e bigode é usado para mostrar o resumo de todo o conjunto de dados ou todos os valores
numéricos no conjunto de dados. O resumo contém mínimo, primeiro quartil, mediana, terceiro quartil e
máximo. Além disso, a mediana está presente entre o primeiro e o terceiro quartil. Aqui o eixo x contém os
valores de dados e as coordenadas y mostram a distribuição de frequência.
#cria valores aleatorios usando numpy
values= [Link](100, 20, 300)
#cria the plot by boxplot() function
[Link](values,patch_artist=True,vert=True)
## {’whiskers’: [<[Link].Line2D object at 0x141ac20d0>, <[Link].Line2D object at 0x1
[Link]()
160
140
120
100
80
60
14