Você está na página 1de 14

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 matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4])
plt.ylabel('alguns números')
plt.show()

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
pyplot.plot, 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].
pyplot.plot é uma função versátil, e terá um número arbitrário de argumentos. Por exemplo, para plotar
x versus y, podemos escrever:

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])


plt.show()

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:

plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')


plt.axis((0,6,0,20)) # define eixo x (0,6), e eixi y (0,20)

## (0.0, 6.0, 0.0, 20.0)

plt.show()

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 = np.arange(0., 5., 0.2)

# traços vermelhos, quadrados azuis e triângulos verdes


plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'gˆ')
plt.show()

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 pandas.DataFrame.

data = {'a': np.arange(50),


'c': np.random.randint(0, 50, 50),
'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100

plt.scatter('a', 'b', c='c', s='d', data=data)


plt.xlabel('entrada a')
plt.ylabel('enrada b')
plt.show()

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

plt.figure(figsize=(9, 3)) # definir tanhao figura

plt.subplot(131) # define impresao primer sub grafico


plt.bar(names, values) # grafica grfico de bar
plt.subplot(132) # define impresao segundo sub grafico
plt.scatter(names, values) # grafico de pontos
plt.subplot(133)
plt.plot(names, values) # grafico de linha
plt.suptitle('Grafico de variável categoricas') # defini nome do titulo grafico
plt.show()

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 np.exp(-t) * np.cos(2*np.pi*t)

t1 = np.arange(0.0,5.0,0.1)
t2 = np.arange(0.0,5.0,0.02)

plt.figure()
plt.subplot(211)
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')

plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), 'r--')
plt.show()

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

pyplot.text pode ser usado para adicionar texto em um local arbitrário, e pyplot.xlabel, pyplot.ylabel
e .pyplot.ylabel são usados para adicionar texto nos locais indicados.

mu, sigma = 100, 15 # define variáveis mu e sigms


x = mu + sigma * np.random.randn(10000)

# o histograma dos dados


n, bins, patches = plt.hist(x, 50, density=True, facecolor='g', alpha=0.75)

plt.xlabel('Inteligência')
plt.ylabel('Probabilidade')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])

## (40.0, 160.0, 0.0, 0.03)

plt.grid(True)
plt.show()

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

matplotlib.pyplot 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:
plt.xscale(‘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


np.random.seed(19680801)

# inventar algunos datos en el intervalo abierto (0, 1)


y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))

# plot con varias escalas de eixos


plt.figure()

# linear
plt.subplot(221)
plt.plot(x, y)
plt.yscale('linear')
plt.title('linear')
plt.grid(True)

# log
plt.subplot(222)
plt.plot(x, y)
plt.yscale('log')
plt.title('log')
plt.grid(True)

# symmetric log
plt.subplot(223)
plt.plot(x, y - y.mean())
plt.yscale('symlog', linthresh=0.01)
plt.title('symlog')
plt.grid(True)

# logit
plt.subplot(224)
plt.plot(x, y)
plt.yscale('logit')
plt.title('logit')
plt.grid(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)
plt.show()

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 plt.hist() 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 = np.random.normal(170, 10, 250)
#plot histograms
plt.hist(x)
plt.show()

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:
plt.bar(x,height,width,bottom,align) exemplo

#define array
data= [5. , 25. , 50. , 20.]
plt.bar(range(len(data)), data,color='c')
plt.show()

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 = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)
plt.show()

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= np.random.normal(100, 20, 300)
#cria the plot by boxplot() function
plt.boxplot(values,patch_artist=True,vert=True)

## {’whiskers’: [<matplotlib.lines.Line2D object at 0x141ac20d0>, <matplotlib.lines.Line2D object at 0x1

plt.show()

160

140

120

100

80

60

14

Você também pode gostar