Gráficos

Criando Gráficos

Para criar gráficos usando Python, você pode utilizar diversas bibliotecas.  Existem várias bibliotecas em Python que são amplamente utilizadas: 

  • Matplotlib: É uma biblioteca bastante popular para visualização de dados em Python. Ela oferece uma ampla gama de gráficos, desde gráficos simples de linha, barra e dispersão até gráficos mais avançados como gráficos de contorno, histogramas e gráficos em 3D. 
  • Seaborn: É uma biblioteca baseada no Matplotlib que fornece uma interface de alto nível para criação de gráficos estatísticos atraentes e informativos. Seaborn é conhecido por sua capacidade de criar gráficos estatísticos complexos de forma fácil e eficiente. 
  • Plotly: É uma biblioteca interativa e de código aberto que permite criar gráficos interativos e visualizações de dados. O Plotly suporta uma ampla gama de tipos de gráficos, incluindo gráficos de barras, dispersão, linha, área, caixa, histograma e muito mais. Também oferece recursos interativos, como zoom, pan, dicas de ferramentas (tooltips) e botões interativos. 
  • Bokeh: É outra biblioteca de visualização interativa que se destaca pela criação de gráficos interativos em um navegador da web. O Bokeh permite criar gráficos complexos, interativos e responsivos, além de oferecer suporte à criação de painéis de controle e dashboards interativos. 
  • Plotnine: É uma biblioteca baseada no pacote ggplot2 do R, que segue a gramática de gráficos, permitindo criar gráficos estatísticos sofisticados em Python. O Plotnine é ideal para quem está familiarizado com a sintaxe do ggplot2 e deseja criar gráficos semelhantes em Python. 

No site de cada biblioteca há tutoriais, referencias, ‘cheat sheets’,  documentação e muito mais:

https://matplotlib.org/

https://seaborn.pydata.org/

https://plotly.com/

 http://bokeh.org/

Essas são apenas algumas das principais bibliotecas de Python para criação de gráficos. Cada uma delas tem suas características e recursos específicos, portanto, a escolha da biblioteca dependerá das suas necessidades e preferências. 

Abaixo mostramos exemplos básicos utilizando a biblioteca Matplotlib, uma das mais populares para criação de gráficos:

				
					import matplotlib.pyplot as plt
				
			

Temos que preparar os dados para serem plotados nos gráficos. 

Podemos criar duas listas ou arrays representando os valores de x e y para nosso gráfico

				
					x = [1, 2, 3, 4, 5]
y = [3, 5, 2, 7, 1]

				
			

Então, podemos criar um gráfico básico de linha: 

				
					plt.plot(x, y)

				
			

Podemos adicionar rótulos e título ao gráfico

				
					plt.xlabel('Eixo X')
plt.ylabel('Eixo Y')
plt.title('Meu Gráfico')

				
			

E por fim, exibir o gráfico

				
					plt.show()

				
			

Podemos exibir mais de um gráfico, criando subplots. 

Abaixo, “fig” é figure (tudo que é apresentado) e “ax” de eixos.

				
					fig, ax = plt.subplots()
ax.plot(df1['coluna1'], df1['coluna2'])

ax.plot(df2['coluna1', df2['coluna2']])

plt.show()
				
			

Costumizando

				
					#colocar pontos no grafico
ax.plot(df1['coluna1'], df1['coluna2'], marker = 'o')
# o argumento "marker" informa como queremoso formato dos pontos no g´rafico, por exemplo: 'o' usa circulos e 'v' usa triangulos
   
#Alterar as linhas
ax.plot(df1['coluna1'], df1['coluna2'], linestyle = '--')
# o argumento "linestyle" informa como queremos as linhas do gráfico   'None'    ':'    '-.'    '--'    '-'

#Alterar cor
ax.plot(df1['coluna1'], df1['coluna2'], color ='r')   
# o argumento "color" informa a cor que queremos, podemos usar por exemplo 'r' de red

#Alterar nome dos eixos
ax.set_xlabel('Nome do eixo x')
ax.set_ylabel('Nome do eixo y')
ax.set_title('Nome do titulo')
















				
			

Adicionando mais dados

				
					#As vezes add muitos dados prejudica o gráfico, então temos subplot
##Cria uma grade de gráficos (ex: 3 linhas x 2 colunas)
fig, ax = plt.subplots(3,2)
   Para adicionar os dados, precisamos chamar os dados por posição
ax[0, 0].plot(df['coluna1'],
           df['coluna2'],
           color='b'])
           

#Caso tenha apenas 1 linha ou 1 coluna
fig, ax = plt.subplots(3,2)
ax[0].plot(df['coluna1'],
           df['coluna2'],
           color='b'])
ax[1].plot(df['coluna1'],
           df['coluna2'],
           color='b'])
ax[0].set_ylabel('Eixo')
ax[1].set_ylabel('Eixo')
ax[1].set_xlabel('Eixo')
     Como são 2 linhas x 1 coluna, precisamos de 2 titulos eixo y e 1 eixo x
     
#Colocar todos os gráficos no mesmo range
fig, ax = plt.subplots(3,2, sharey=True)
				
			

Gráfico de barras

Para criar gráficos de barras em Python, você pode usar a biblioteca Matplotlib.
				
					fig, ax = plt.subplots()
ax.bar(df.index, df['coluna'])

#Exemplo
pacientes = ['paciente1', 'paciente2', 'paciente3', 'paciente4']
ferritina = [90, 153, 458, 37]
ax.bar(pacientes, ferritina)
#Exibir o gráfico
plt.show()


#Arrumar os labels
ax.set_xticklabels(df.index, rotation = 90)
				
			
Adicionando mais dados
				
					ax.bar(df.index, df['coluna1'])
ax.bar(df.index, df['coluna2'], bottom=df['coluna1'])
ax.bar(df.index, df['coluna2'], bottom=df['coluna1'] + df['coluna3'])
ax.set_xticklabels(df.index, rotation = 90)
ax.set_ylabel('Eixo y')
				
			
Adicionando Rótulos
				
					ax.bar(df.index, df['coluna1'], label = 'nome')

ax.bar(df.index, df['coluna2'], bottom=df['coluna1'], label = 'nome2')

ax.bar(df.index, df['coluna3'], bottom=df['coluna1'] + df['coluna2'], label = 'nome3')

ax.set_xticklabels(df.index, rotation = 90)

ax.set_ylabel('Eixo y')

ax.legend()


#Exemplo
plt.xlabel('Pacientes')
plt.ylabel('Ferritina')
plt.title('Nível de Ferritina nos Pacientes')
#Exibir o gráfico
plt.show()
				
			

Histogramas

				
					ax.hist(df['coluna1'], label = 'Coluna')
ax.hist(df['coluna2'], label = 'Coluna2')
ax.set_xlabel('Eixo X')
ax.set_ylabel('Eixo y')
ax.legend()
plt.show()
				
			
Dividir o gráfico um número x de colunas com “bins”
				
					ax.hist(df['coluna1'], label = 'Coluna', bins=5)
ax.hist(df['coluna2'], label = 'Coluna2', bins=5)
ax.set_xlabel('Eixo X')
ax.set_ylabel('Eixo y')
ax.legend()
plt.show()
				
			
Colocar um range ao inves de n° de bins
				
					ax.hist(df['coluna1'], label = 'Coluna1', bins=[5, 10, 15, 20])
ax.hist(df['coluna2'], label = 'Coluna2', bins=[5, 10, 15, 20])
ax.set_xlabel('Eixo X')
ax.set_ylabel('Eixo y')
ax.legend()
plt.show()
				
			
Podemos alterar o tipo da barra com histtype
				
					ax.hist(df['coluna1'], label = 'Coluna1', bins=[5, 10, 15, 20], histtype = 'step')
ax.hist(df['coluna2'], label = 'Coluna2', bins=[5, 10, 15, 20], histtype = 'step')
				
			

Barra de Erro

				
					fig, ax = plt.subplots()

ax.bar('Nova_coluna',
       df['coluna1'].mean()
       yerr=df['coluna1'].std())

ax.bar('Nova_coluna2',
       df['coluna2'].mean()
       yerr=df['coluna2'].std())

ax.set_ylabel('Eixo y')
plt.show()
				
			

Boxplot

				
					ax.boxplot([df['coluna1'], df['coluna2']])

ax.set_xticklabels(['nome', 'nome2'])
ax.set_ylabel('Eixo y')

plt.show()

#Média = linha que aparece no meio A caixa é a distancia interquartilica (entre 25 e 75) Risco é o IC de 95 Outlier = Pontos que aparecem fora
				
			

Scatterplot

				
					fig, ax = plt.subplots()
ax.scatter([df['coluna1'], df['coluna2']])

				
			
Colocando 2 dados
				
					x = df['data1':'data2']
y = df['data1':'data2']
ax.scatter(vr1['Coluna1'], vr1['colouna2'], color='red', label='x')
ax.scatter(vr2['Coluna1'], vr2['colouna2'], color='blue', label='y')
ax.legend()
ax.set_xlabel('Eixo x')
ax.set_ylabel('Eixo y')
plt.show()
				
			
Modificando cor de cada índice
				
					ax.scatter(df['Coluna1'], df['colouna2'], c=df.index)
ax.set_xlabel('Eixo x')
ax.set_ylabel('Eixo y')
plt.show()
				
			

Manipulando Desing

				
					#Usar ggplot altera todo o desing do gráfico
plt.style.use('ggplot')
fig, ax = plt..subplots()
ax.plot(df['coluna1'], df['coluna2'])
ax.plot(df2['coluna1'], df2['coluna2'])
ax.set_xlabel('Eixo x')
ax.set_ylabel('Eixo y')
plt.show()

#Voltar ao padrão
plt.style.use('default')

#Alguns modelos
plt.style.use('ggplot')
plt.style.use('bmh')
plt.style.use('seaborn-colorblind')

#Tamanho
fig.set_size_inches([5,3])
				
			

Optimizando os gráficos

Podemos criar “functions“, que  são blocos de código reutilizáveis que executam uma determinada tarefa. Elas são usadas para organizar o código, melhorar a legibilidade, evitar repetições e facilitar a manutenção do programa.

 
As functions são definidas usando a palavra-chave “def”, seguida pelo nome da função, parênteses contendo os parâmetros (opcionalmente) e dois pontos. O corpo da função é indentado e contém as instruções que serão executadas quando a função for chamada.
				
					def plot_timeseries(axes, x,y, color, xlabel, ylabel):
axes.plot(x, y, color=color)
axes.set_xlabel(xlabel)
axes.set_ylabel(ylabel, color=color)
axes.tick_params('y', colors=color)

plot_timeseries(ax, df.index, df['coluna1', 'red', 'EixoX', 'EixoY1'])
ax2 = ax.twinx()
plot_timeseries(ax, df.index, df['coluna2', 'blue', 'EixoX', 'EixoY2'])
				
			

Exercícios

A – Crie um gráfico de barras que mostre a quantidade de vendas de diferentes produtos em um mês. Use os seguintes dados: 
Produtos: [‘Leite’, ‘Banana’, ‘Chocolate’, ‘Bolo’]   |  Vendas (unidades): [100, 150, 80, 200]
B – Crie um gráfico de histograma que represente a distribuição de idades de um grupo de pessoas. Use os seguintes dados: 
Idades: [22, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]
C – Crie um gráfico de boxplot que represente a distribuição de salários em uma empresa. Use os seguintes dados: 
Salários: [3.500, 4.000, 4.500, 5.000, 5.500, 6.000, 7.000, 8.000]

Comentários

{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}