Teria como colocar ponto flutuante nos números do eixo y do gráfico, principalmente para os gráficos de contagem?
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.
:)