Um gráfico de barras mostra a relação entre uma variável numérica e uma variável categórica.
Cada entidade da variável categórica é representada como uma barra. O tamanho da barra representa seu valor numérico.
Esta seção mostra como construir um gráfico de barras com a função bar do módulo Matplotlib do Python.
import numpy as np
import matplotlib.pyplot as plt
height = [3, 12, 5, 18, 45]
bars = ('A', 'B', 'C', 'D', 'E')
y_pos = np.arange(len(bars))
plt.bar(y_pos, height)
plt.xticks(y_pos, bars)
plt.show()
Um gráfico de Aranha/Radar exibe o valor de várias variáveis numéricas para uma ou várias entidades.
O objetivo é demonstrar como desenhar um gráfico de radar básico usando as funções básicas do matplotlib.
O exemplo simples abaixo exibe os valores de 5 variáveis para apenas um indivíduo.
Os dados de entrada são um quadro de dados de pandas onde cada linha representa um indivíduo e cada coluna uma variável.
import matplotlib.pyplot as plt
import pandas as pd
from math import pi
df = pd.DataFrame({
'group': ['A','B','C','D'],
'var1': [38, 1.5, 30, 4],
'var2': [29, 10, 9, 34],
'var3': [8, 39, 23, 24],
'var4': [7, 31, 33, 14],
'var5': [28, 15, 32, 14]
})
# número de variáveis
categories=list(df)[1:]
N = len(categories)
# Estamos prestes a plotar a primeira linha do quadro de dados.
# Mas precisamos repetir o primeiro valor para fechar o gráfico circular:
valores=df.loc[0].drop('group').values.flatten().tolist()
valores += valores[:1]
valores
# O que será o ângulo de cada eixo no gráfico? (dividimos o gráfico / número de variável)
angulos = [n for n in range(N)]
for i in range(N): angulos[i] = angulos[i] / float(N) * 2 * pi
angulos += angulos[:1]
# Inicializar o gráfico de aranha.
# O eixo polar é criado, mas não é desenhado (por isso, não é visível).
ax = plt.subplot(111, polar=True)
# Desenhar um eixo por variável + adicionar rótulos
plt.xticks(angulos[:-1], categories, color='darkblue', size=24)
# Desenhar rótulos de eixo y, mas não adicionar rótulos de eixo y (0, 10, 20, 30)
ax.set_rlabel_position(0)
plt.yticks([10,20,30], ["10","20","30"], color="grey", size=18)
plt.ylim(0,40)
# Plotar os dados.
# O parâmetro 'angulos' define os ângulos em que os pontos serão plotados.
# O parâmetro 'valores' define os valores para cada ângulo.
# O parâmetro 'linewidth' define a largura da linha.
# O parâmetro 'linestyle' define o estilo da linha ('solid', 'dashed', 'dashdot', 'dotted').
ax.plot(angulos, valores, linewidth=1, linestyle='solid')
# Preencher a área entre a linha e o eixo.
ax.fill(angulos, valores, 'b', alpha=0.1)
# mostrar o gráfico
plt.show()
A biblioteca wordcloud está aqui para ajudá-lo a construir uma nuvem de palavras em minutos.
Para instalar a biblioteca, execute no seu terminal o comando:
pip install wordcloud
Aqui estão alguns trechos de código básicos usando a função WordCloud() para você começar. 🔥
from wordcloud import WordCloud
import matplotlib.pyplot as plt
text=("Cieda Cieda Cieda Cieda Cieda Multicieda Multicieda Python Python Python Matplotlib")
wordcloud = WordCloud(width=480, height=480, margin=0).generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.margins(x=0, y=0)
plt.show()
Um gráfico de coordenadas paralelas permite a comparação das características de várias observações individuais (séries) em um conjunto de variáveis numéricas.
A função parallel_coordinates() do Pandas é, provavelmente, a melhor maneira de traçar um gráfico de coordenadas paralelas com Python.
Plotly é uma boa alternativa para plotar versões interativas.
import pandas
import matplotlib.pyplot as plt
from pandas.plotting import parallel_coordinates
import seaborn as sns
data = sns.load_dataset('iris')
parallel_coordinates(data, 'species', colormap=plt.get_cmap("Set2"))
plt.show()
Um gráfico de pirulito é uma alternativa ao gráfico de barras mais usual.
O Python permite construir gráficos de pirulito com à biblioteca matplotlib, como no exemplo abaixo.
A estratégia aqui é usar a função stem() ou hackear a função vline() dependendo do seu formato de entrada.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
'grupo': list(map(chr, range(65, 85))),
'valores': np.random.uniform(size=20)
})
ordered_df = df.sort_values(by='valores')
my_range = range(1,len(df.index)+1)
plt.stem(ordered_df['valores'])
plt.xticks( my_range, ordered_df['grupo'])
plt.show()