Introdução
Neste laboratório, aprenderemos como personalizar gráficos de violino usando Matplotlib. Gráficos de violino são uma ferramenta poderosa para visualizar a distribuição e a densidade de dados. Ao personalizar a aparência do gráfico, podemos criar visualizações mais informativas e visualmente atraentes.
Dicas para a VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Criar dados de teste
Primeiramente, criaremos alguns dados de teste para usar no gráfico de violino. Usaremos NumPy para gerar quatro arrays de 100 valores normalmente distribuídos com desvios padrão crescentes.
import matplotlib.pyplot as plt
import numpy as np
## create test data
np.random.seed(19680801)
data = [sorted(np.random.normal(0, std, 100)) for std in range(1, 5)]
Criar um gráfico de violino padrão
Em seguida, criaremos um gráfico de violino padrão usando a função violinplot do Matplotlib. Isso fornecerá uma linha de base para comparação quando personalizarmos o gráfico em etapas posteriores.
## create default violin plot
fig, ax1 = plt.subplots()
ax1.set_title('Default Violin Plot')
ax1.set_ylabel('Observed Values')
ax1.violinplot(data)
Personalizar a aparência do gráfico de violino
Agora, personalizaremos a aparência do gráfico de violino. Primeiro, limitaremos o que o Matplotlib desenha, definindo os argumentos showmeans, showmedians e showextrema como False. Em seguida, mudaremos a cor e a opacidade dos corpos do violino usando os métodos set_facecolor e set_alpha. Finalmente, adicionaremos uma representação simplificada de um box plot (gráfico de caixa) no topo do gráfico de violino, usando a função percentile do NumPy para calcular os quartis, medianas e whiskers (bigodes).
## customize violin plot appearance
fig, ax2 = plt.subplots()
ax2.set_title('Customized Violin Plot')
ax2.set_ylabel('Observed Values')
## create violin plot
parts = ax2.violinplot(
data, showmeans=False, showmedians=False,
showextrema=False)
## customize violin bodies
for pc in parts['bodies']:
pc.set_facecolor('#D43F3A')
pc.set_edgecolor('black')
pc.set_alpha(1)
## add box plot
quartile1, medians, quartile3 = np.percentile(data, [25, 50, 75], axis=1)
whiskers = np.array([
adjacent_values(sorted_array, q1, q3)
for sorted_array, q1, q3 in zip(data, quartile1, quartile3)])
whiskers_min, whiskers_max = whiskers[:, 0], whiskers[:, 1]
inds = np.arange(1, len(medians) + 1)
ax2.scatter(inds, medians, marker='o', color='white', s=30, zorder=3)
ax2.vlines(inds, quartile1, quartile3, color='k', linestyle='-', lw=5)
ax2.vlines(inds, whiskers_min, whiskers_max, color='k', linestyle='-', lw=1)
Definir o estilo do eixo
Finalmente, definiremos o estilo para o eixo x, especificando os rótulos e limites dos ticks (marcas). Definiremos uma função auxiliar set_axis_style para realizar isso.
## set style for the axes
labels = ['A', 'B', 'C', 'D']
set_axis_style(ax2, labels)
def set_axis_style(ax, labels):
ax.set_xticks(np.arange(1, len(labels) + 1))
ax.set_xticklabels(labels)
ax.set_xlim(0.25, len(labels) + 0.75)
ax.set_xlabel('Sample Name')
Resumo
Neste laboratório, aprendemos como personalizar a aparência dos gráficos de violino usando Matplotlib. Criamos um gráfico de violino padrão e, em seguida, o modificamos, alterando a cor e a opacidade dos corpos do violino e adicionando uma representação simplificada de um box plot (gráfico de caixa) no topo. Também definimos o estilo para os rótulos e limites dos ticks (marcas) do eixo x. Ao personalizar a aparência do gráfico, podemos criar visualizações mais informativas e visualmente atraentes.