1
resposta

[Dúvida] Duvida criação de gráfico na biblioteca Plotly

Pessoal, se alguém puder me ajudar eu agradeço Eu achei um banco de dados em csv na internet que contém informações sobre as ocorrências registradas no estado de sp ao longo dos anos (https://basedosdados.org/dataset/dbd717cb-7da8-4efd-9162-951a71694541?table=a2e9f998-e2c2-49b7-858a-ae1daef46dc0)

Enfim, com base nisso eu quero criar alguns tipos de graficos diferentes para colocar no meu portfólio,onde até o momento eu fiz isso

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

df = pd.read_csv('/content/br_sp_gov_ssp_ocorrencias_registradas.csv.gz')

fig = px.line(df, x='ano', y='homicidio_doloso', color='regiao_ssp',
             title='Evolução dos Homicídios por Região')

fig.update_layout(
    xaxis={'tickangle': -45, 'range': [1990, 2020]},
    yaxis={'title': 'Número de crimes', 'automargin': True},
    legend_title='Região',
    hovermode='x unified'  # Mostra informações ao passar o mouse sobre todas as linhas
)

# Ajustar a largura das linhas e o tipo de linha
fig.update_traces(line=dict(width=2))  # Ajuste a largura das linhas

fig.show()

eu tratei os dados nulos ,porém meu grafico plota assim Insira aqui a descrição dessa imagem para ajudar na acessibilidade . Saberiam me dizer aonde estou errando? por favor

1 resposta

Olá, Gerson!

Possíveis Causas do Problema

  1. Dados Faltantes ou Nulos: Embora você tenha mencionado que tratou os dados nulos, é fundamental garantir que não haja valores nulos nas colunas que você está utilizando para o gráfico (ano, homicidio_doloso, regiao_ssp). Você pode verificar isso com:

    print(df[['ano', 'homicidio_doloso', 'regiao_ssp']].isnull().sum())
    
  2. Tipo de Dados: Verifique se as colunas ano e homicidio_doloso estão no tipo de dado correto. Por exemplo, ano deve ser um inteiro e homicidio_doloso deve ser numérico:

    print(df.dtypes)
    
  3. Filtragem dos Dados: É importante garantir que os dados que você está plotando são relevantes e estão dentro do intervalo esperado. Tente fazer uma filtragem básica para garantir que você não está lidando com valores atípicos:

    df_filtered = df[(df['ano'] >= 1990) & (df['ano'] <= 2020)]
    

Exemplo Prático de Ajuste

Aqui está um exemplo de como você poderia ajustar seu código para garantir que os dados estejam corretos antes de plotar:

import pandas as pd
import plotly.express as px

# Carregar os dados
df = pd.read_csv('/content/br_sp_gov_ssp_ocorrencias_registradas.csv.gz')

# Verificar e tratar dados nulos
df.dropna(subset=['ano', 'homicidio_doloso', 'regiao_ssp'], inplace=True)

# Garantir que os tipos de dados estão corretos
df['ano'] = df['ano'].astype(int)
df['homicidio_doloso'] = pd.to_numeric(df['homicidio_doloso'], errors='coerce')

# Filtrar os dados
df_filtered = df[(df['ano'] >= 1990) & (df['ano'] <= 2020)]

# Criar o gráfico
fig = px.line(df_filtered, x='ano', y='homicidio_doloso', color='regiao_ssp',
             title='Evolução dos Homicídios por Região')

# Atualizar layout do gráfico
fig.update_layout(
    xaxis=dict(tickangle=-45, range=[1990, 2020]),
    yaxis=dict(title='Número de crimes', automargin=True),
    legend_title='Região',
    hovermode='x unified'
)

# Ajustar a largura das linhas
fig.update_traces(line=dict(width=2))

# Mostrar o gráfico
fig.show()

Conclusão

Com esses ajustes, você deve conseguir visualizar o gráfico corretamente. Lembre-se de sempre verificar os dados que você está utilizando, pois isso é fundamental para a construção de visualizações precisas e informativas.

Se precisar de mais ajuda, não hesite em perguntar! Boa sorte com seu portfólio!

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