Dicas
Carregando, aguarde alguns segundos.

4 - DICA CIEDA #004 Gráfico de Barras Circulares Coloridas

O conceito do gráfico de barras circulares, também conhecido como gráfico de pista de corrida, é expressar as barras ao redor do centro de um círculo.

Cada barra começa no mesmo grau e se move na mesma direção.

Aquele mais próximo de completar a circunferência tem o maior valor.

Essa é uma boa ideia para chamar a atenção dos leitores.

A unidade da barra circular é "grau", indo de 0 a 360 graus, portanto 1% da circunferência equivale a 3,6 graus.

Os próximos ao centro terão um comprimento menor do que os distantes do centro, mas o percentual independe do comprimento da barra, mas do seu percentual em relação à circunferência completa.

4.1 - Traçar o gráfico com o DataFrame do Pandas

Podemos criar gráficos de barras circulares combinando os pacotes Matplotlib, Seaborn e Pandas.

Importamos no dataframe df os dados do arquivo-csv "dados_paises.csv", da emissão de carbono dos países relacionados, com a função read_csv() do Pandas.

Clique aqui para baixar o arquivo, que está no formato-texto com codificação UTF-8.

Plotamos o gráfico com a função barh() do módulo matplotlib.pyplot.

Utilizamos a função color_palette() do pacote seaborn para retornar a paleta de cores utilizada com as barras circulares.

Analise o código observando o gráfico produzido.

Rode o código no programa-interpretador do Python ou no Jupyter-Lab e veja o gráfico gerado.

Baixe o arquivo-csv de países aqui

Importamos os pacotes que serão utilizados.

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import numpy as np

Atribuimos na variável df o dataframe retornado pela função read_csv(), carregando o arquivo dados_paises.csv contendo os dados de emissão de carbono dos países relacionados.

csv = "dados_paises.csv"
df = pd.read_csv(csv,encoding="UTF-8")
df_len = len(df)
print(df)

Verificamos o tipo do dataframe.

print(type(df))

Atribuimos na variável serie_paises a série no dataframe com os países.

serie_paises = df["País"]
print(serie_paises)

Verificamos o tipo da série.

print(type(serie_paises))

Atribuimos na variável serie_emissoes a série no dataframe com as emissões dos países.

serie_emissoes = df["Emissão"]
print(serie_emissoes)

Atribuimos na variável serie_porcentagens a série no dataframe com as porcentagens das emissões dos países.

serie_porcentagens = df["Porcentagem"]
print(serie_porcentagens)

Declaramos a função obter_paleta retornando a lista com a paleta de cores selecionada.

def obter_paleta(name, number):
    paleta = list(sns.color_palette(palette=name, n_colors=number).as_hex())
    return paleta

Declaramos a função show_grafico_barras_circulares para mostrar o gráfico de barras circulares coloridas.

O gráfico é gerado barra por barra, com customização das cores das barras e rótulos para legenda.

def show_grafico_barras_circulares(titulo,formato,serie_x,serie_y,nome_paleta):
    # inicializações para o gráfico
    tam = len(serie_x)
    paleta = obter_paleta(nome_paleta,tam)
    lista_y = list(serie_y)
    plt.gcf().set_size_inches(12, 12)
    sns.set_style("darkgrid")
    #
    # atribuir valor máximo
    max_val = max(serie_y) * 1.0
    #
    # atribuir a projeção polar
    ax = plt.subplot(projection="polar")
    #
    # atribuir as subplotagens
    ax.set_theta_zero_location("N")
    ax.set_theta_direction(1)
    ax.set_rlabel_position(0)
    ax.set_thetagrids([], labels=[])
    ax.set_rgrids(range(tam), labels=serie_x)
    #
    # constantes usadas no laço
    dois_pi = 2 * np.pi
    k = dois_pi/max_val
    #
    # laço de barras circulares
    for i in range(df_len):
        lei = lista_y[i]
        lb = formato.format(lei)
        cor = paleta[i]
        ax.barh(i,lei*k,label=lb,color=cor)
    #
    # título e legenda
    plt.title(titulo,fontsize=16)
    plt.legend(loc="upper right")
    #
    # mostrar o gráfico
    plt.show()

Exemplo: paleta "viridis_r" cruzando países e valores de emissão:

tit1 = "Países x Valores de Emissão"
fmt1 = "{:.2f}"
show_grafico_barras_circulares(tit1,fmt1,serie_paises,serie_emissoes,"viridis_r")

Exemplo: paleta "plasma_r" cruzando países e valores de emissão:

show_grafico_barras_circulares(tit1,fmt1,serie_paises,serie_emissoes,"plasma_r")

Exemplo: paleta "Spectral" cruzando países e porcentagens dos valores de emissão:

tit2 = "Países x Porcentagens de Emissão"
fmt2 = "{:.2f}%"
show_grafico_barras_circulares(tit2,fmt2,serie_paises,serie_porcentagens,"Spectral")

Exemplo: paleta "hsv" cruzando países e porcentagens dos valores de emissão:

show_grafico_barras_circulares(tit2,fmt2,serie_paises,serie_porcentagens,"hsv")
Arduino
Coautor
Betobyte
Autor
Autores
||| Áreas ||| Estatística ||| Python ||| Projetos ||| Dicas & Truques ||| Quantum ||| Dicas || Dicas || Aulas | #001 (Diagrama do Gráfico) | #002 (Gráfico de Bolhas) | #003 (Gráfico de Barras Coloridas) | #004 (Gráfico de Barras Circulares) |