Gráficos de dispersão de codificação de cores por valores de coluna em Python
Na visualização de dados, atribuir cores a diferentes categorias pode aumentar a clareza e revelar padrões. Essa funcionalidade está prontamente disponível no ggplot2 para R, mas como podemos conseguir o mesmo em Python usando pandas e matplotlib?
Atualização: Seaborn Enhancements
Desde a resposta original , Seaborn emergiu como uma biblioteca poderosa para a criação de enredos informativos e visualmente atraentes. Suas atualizações recentes oferecem funções convenientes para colorir gráficos de dispersão com base nos valores das colunas:
Para aqueles que buscam uma abordagem direta com Matplotlib, aqui está uma função personalizada que atribui cores para pontos com base em uma coluna categórica:
import matplotlib.pyplot as plt importar pandas como pd def dfScatter(df, xcol='Altura', ycol='Peso', catcol='Sexo'): fig, machado = plt.subplots() categorias = np.unique(df[catcol]) cores = np.linspace(0, 1, len(categorias)) colordict = dict(zip(categorias, cores)) df["Cor"] = df[catcol].apply(lambda x: colordict[x]) ax.scatter(df[xcol], df[ycol], c=df["Cor"]) return figEsta função cria um dicionário de cores a partir de valores de categoria exclusivos e atribui cores correspondentes aos pontos de dados. O gráfico de dispersão é então gerado com pontos codificados por cores.import matplotlib.pyplot as plt
import pandas as pd
def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
fig, ax = plt.subplots()
categories = np.unique(df[catcol])
colors = np.linspace(0, 1, len(categories))
colordict = dict(zip(categories, colors))
df["Color"] = df[catcol].apply(lambda x: colordict[x])
ax.scatter(df[xcol], df[ycol], c=df["Color"])
return fig
ExemploUsando o dataframe de amostra fornecido:
df = pd. DataFrame({'Altura': np.append(np.random.normal(6, 0,25, tamanho=5), np.random.normal(5,4, 0,25, tamanho=5)), 'Peso': np.append(np.random.normal(180, 20, tamanho=5), np.random.normal(140, 20, tamanho=5)), 'Gênero': ["Masculino", "Masculino", "Masculino", "Masculino", "Masculino", "Female", "Female", "Female", "Female", "Female"]})Chamando a função dfScatter com o dataframe:import matplotlib.pyplot as plt
import pandas as pd
def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
fig, ax = plt.subplots()
categories = np.unique(df[catcol])
colors = np.linspace(0, 1, len(categories))
colordict = dict(zip(categories, colors))
df["Color"] = df[catcol].apply(lambda x: colordict[x])
ax.scatter(df[xcol], df[ycol], c=df["Color"])
return fig
fig = dfScatter(df )
fig.savefig('color_coded_scatterplot.png')Produz um gráfico de dispersão onde os pontos são coloridos por gênero:fig = dfScatter(df)
fig.savefig('color_coded_scatterplot.png')
Seaborn's advanced recursos e a função dfScatter personalizada fornecem opções flexíveis para adicionar codificação de cores a gráficos de dispersão em Python, tornando a visualização de dados mais informativa e visualmente envolvente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3