Teria como colocar ponto flutuante nos números do eixo y do gráfico, principalmente para os gráficos de contagem?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Teria como colocar ponto flutuante nos números do eixo y do gráfico, principalmente para os gráficos de contagem?
Olá Adriana! Tudo tranquilo por aí?
Você conseguiria nos informar mais algum detalhe a respeito do gráfico mencionado? Pode ser a aula em que o mesmo se encontra, um print, seu código.
Fico no aguardo para ajudarmos da melhor forma possível.
Abraços.
Olá Bruno. Tudo certo contigo?
A aula é a 01 do curso Clusterização de dados: segmentação de clientes.
Segue o print do código
# st = variavel que vou trabalhar
# dados: banco de dados que esta a informação
def plot_perc(st, dados):
plt.figure(figsize=(20,8))
# g é o nome do grafico
g = sns.countplot(x=st, data=dados, orient='h')
g.set_ylabel('Contagem', fontsize=17) # label do eixo y
sizes=[] # vetor que vai colocar o valor percentual para cada uma das barras
for p in g.patches:
height = p.get_height() # altura de cada uma das barras
sizes.append(height) # cola o valor da altura em cada uma das barras
g.text(p.get_x() + p.get_width()/1.6, #pega a altura e divide pela expessura e divide por 1.6, o número 1.6 é um numero bom para mostrar o texto em cima das barras
height+200, # a altura em y. 200 é em pixel
'{:1.2f}%'.format(height/116581*100), #116581 é o numero total de dados. float com 2 casas decimais com sinal %
ha = 'center', # alinhamento horizontal
va = 'bottom', # alinhamento vertical
fontsize = 12
)
g.set_ylim(0, max(sizes)*1.1) # tamanho do limite do eixo y, pois não quero que a maior barra fique muito colada na borda da imagem
Oiê, Adriana!
Desculpa a demora em retornar.
Para fazer essa formatação você pode utilizar o método FormatStrFormatter do matplotlib da seguinte forma:
from matplotlib.ticker import FormatStrFormatter # Formatação dos valores do eixo y
def plot_perc(st,dados):
plt.figure(figsize=(20,8))
g = sns.countplot(x= st,data=dados,orient='h')
g.set_ylabel('Contagem',fontsize=17)
g.yaxis.set_major_formatter(FormatStrFormatter('%.2f')) # Formatação dos valores do eixo com duas casas decimais
sizes = []
for p in g.patches:
height = p.get_height()
sizes.append(height)
g.text(p.get_x() + p.get_width()/1.6,
height+200,
'{:1.2f}%'.format(height/116581*100),
ha = 'center',va='bottom',fontsize=12)
g.set_ylim(0,max(sizes)*1.1)Onde o argumento %.2f define a quantidade de casas decimais. Caso você queira com 3 casas decimais, por exemplo, é só alterar para %.3f`;
Caso ainda não seja exatamente o que você procura, pode nos retornar por aqui mesmo.
Espero ter ajudado.
:)