Mais rótulos com Matplotlib
No último tutorial apenas começamos a aprender sobre rótulos dos marcadores. A biblioteca matplotlib nos fornece bem mais métodos e funções para adicionar e alterar os rótulos dos nossos gráfico.
Um jeito mais simples…
No exemplo do tutorial anterior criamos um gráfico de barras com um rótulo em cada barra. Mas existe um jeito mais simples de conseguir o mesmo resultado utilizando menos código:
import matplotlib.pyplot as plt
lista_nome = ('Milho', 'Trigo', 'Cevada', 'Centeio', 'Aveia')
safra = np.random.randint(0, 99, size = len(lista_nome))
posicao_lista = np.arange(len(lista_nome))
plt.bar(posicao_lista, safra, color = '.75', align = 'center')
plt.xticks(posicao_lista, lista_nome)
plt.show()
Executando o código acima o seu gráfico deve esta parecido com este:
Como funciona…
Nesse exemplo não utilizamos os métodos do módulo ticker. Em vez disso utilizamos o método xticks. Esse método recebe dois argumentos. O primeiro é uma lista com a posição das legendas e o segundo é uma lista contendo os nomes que serão usados como rótulos nos marcadores. O resultado é o mesmo do tutorial passado. Com a diferença que é mais fácil de lembrar e mais curto para escrever.
Tem mais…
Até agora usamos uma lista de nomes predefinidos para criar os rótulos dos nossos marcadores. Uma tarefa fácil com poucos elementos, mas imagine com dezenas de elementos. Já não é uma tarefa tão fácil. Outro cenário é que você pode querer um gráfico com rótulos de porcentagem. Você pode fazer uma lista com as porcentagens correspondentes, mas existe um jeito melhor. Veja o exemplo abaixo:
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
def f_rotulo(value, pos):
return '%0.1f%%' % (100. * value)
ax = plt.axes()
ax.xaxis.set_major_formatter(ticker.FuncFormatter(f_rotulo))
x = np.linspace(0, 1, 200)
plt.plot(x, np.exp(-10 * x), c = (0., .40, 1.))
plt.plot(x, np.exp(-5 * x), c = (.2, 1., .2), ls = '--')
plt.show()
Executando o código acima o seu gráfico deve ser igual a este:
Como funciona…
Criamos uma função que retorna uma string com a porcentagem do valor passado como argumento. E utilizamos a função FuncFormatter. Essa função recebe uma função como parâmetro e chama essa função, passando o valor e a posição do marcador como argumento, toda vez que a função precisar criar um rótulo. O valor retornado pela função f_rotulo é usado para nomear os marcadores.
0 comentários:
Postar um comentário