3
respostas

Colocar ponto decimal no eixo Y do gráfico

Teria como colocar ponto flutuante nos números do eixo y do gráfico, principalmente para os gráficos de contagem?

3 respostas

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.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!