Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

185
Vistas
Plotly JupyterDash no está eliminando columnas irrelevantes cuando aplica orden de categoría para medir con un valor negativo

Estoy tratando de ordenar el eje de mi gráfico según los valores en la columna "ventas". Una vez que aplico fig.update_layout(yaxis={'categoryorder':'total descendente'}) a mi figura, el gráfico ya no elimina filas irrelevantes al filtrar el marco de datos seleccionando el valor "099" para la opción de devolución de llamada RadioItems.

código para recrear el problema:

 import pandas as pd from plotly import tools import plotly.express as px import plotly.graph_objects as go import dash import dash_core_components as dcc import dash_html_components as html from jupyter_dash import JupyterDash import dash_bootstrap_components as dbc from dash.dependencies import Input, Output data = {'name': {0: 'G P', 1: 'D L', 2: 'T B', 3: 'N A', 4: 'P O', 5: 'Ho A'}, 'team': {0: '099', 1: '099', 2: '073', 3: '073', 4: '073', 5: '099'}, 'sales': {0: 88946, 1: 8123, 2: 6911, 3: 74796, 4: 8532, 5: -31289} } df1 = pd.DataFrame.from_dict(data) app = JupyterDash(external_stylesheets=[dbc.themes.SLATE]) template = 'plotly_dark' controls = dbc.Card( [ dbc.FormGroup( [ dbc.Label("Teams"), dcc.RadioItems( id='slm-radio', options=[{'label': 'All', 'value': 'All'}] + [{'label': k, 'value': k} for k in df1['team'].unique()], value='All', ), ], ) ] ) app.layout = dbc.Container( [ dbc.Row([ dbc.Col([controls],xs = 4), dbc.Col([ dbc.Row([ dbc.Col(dcc.Graph(id="sales_graph")), ]) ]), ]), html.Br(), ], fluid=True, ) @app.callback( Output("sales_graph", "figure"), [ Input("slm-radio", "value") ], ) def history_graph(team): dataset = df1 if not team == 'All': dataset = dataset[dataset['team']==team] else: dataset = dataset v_cat = dataset['name'] x_val = dataset['sales'] fig = go.Figure(go.Bar( x=x_val, y=v_cat, marker_color="#ff0000", orientation='h', width=0.25 )) fig.update_layout(template='plotly_dark') fig.update_layout(yaxis={'categoryorder':'total descending'}) return fig app.run_server(mode='inline', port = 8009)

El resultado deseado es eliminar las columnas NA, PO y TB cuando se selecciona '099'

Obtengo los resultados deseados si:

  1. el valor de 'Ho A' se cambia a positivo
  2. se elimina la ordenación del eje
  3. si el gráfico se representa usando plotly localmente sin guión
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Pude solucionar este problema calculando la clasificación independientemente del paso de la gráfica y colocando las clasificaciones en una serie, rankings . Luego pasé la serie clasificada a

 fig.update_layout(yaxis={'categoryorder':'array', 'categoryarray':rankings['team_rank']})
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda