Gráfico de pizza

64 views
Skip to first unread message

Ameófis de Paula Vale Vale

unread,
Jan 15, 2024, 8:38:17 PMJan 15
to Python Brasil
Bom dia! Alguém pode me ajudar? Não consigo entender o seguinte no código abaixo:
Porque a função  my_autopct usa os valores de entrada retirados de values e porque 
os converte em porcentagem?
Grato!

import matplotlib.pyplot as plt
values = [3, 12, 5, 8]
labels = ['a', 'b', 'c', 'd']
def make_autopct(values):
  print(values)
   def my_autopct(pct):
        print(pct)
        total = sum(values)
        val = int(round(pct*total/100.0))
        print(val)
        return '{p:.2f}%  ({v:d})'.format(p=pct,v=val)
  return my_autopct
plt.pie(values, labels=labels, autopct=make_autopct(values))
plt.show()

Marcelo Valle

unread,
Jan 21, 2024, 4:32:25 PMJan 21
to python...@googlegroups.com
Em python, funcoes tambem sao variaveis, eh possivel declarar um dado do tipo "funcao". 
No caso, a funcao makeauto_pct recebe values e criar uma funcao com esse valor - a funcao criada recebe a porcentagem. 
plt.pie recebe uma funcao como parametro e espera que essa funcao receba um valor de porcentagem e devolva o valor absoluto referente aquela porcentagem, por exemplo, se values tem os itens [1,2,3,4] o total eh 10, entao 25% corresponderia a 2.5. 
A funcao retornada por make_autopct retorna uma funcao exatamente assim - ela soma os items de values, recebe um valor como 0.25 (25%) e retorna um valor como 2.5 (0.25 * 10). 
Exemplo:

values = [3, 12, 5, 8] # total = 3 + 12 + 5 + 8 = 28
fn = make_autopct(values)
# 25% de 28 = 0.25 * 28 = 7
print(fn(25)) # 7

[]s


--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para acessar essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/0cd9487f-a8c8-4453-a1d8-8270b30ebba0n%40googlegroups.com.

Ameófis de Paula Vale Vale

unread,
Jan 22, 2024, 12:08:32 PMJan 22
to python...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages