Dash no muestra la figura creada con px.imshow
Como se indica en el título, Dash no muestra una figura (imagen) creada con px.imshow. A continuación se muestra mi código.
import plotly.graph_objects as go # o plotly.express as px
import plotly.express as px
import numpy as np
import dash
import dash_core_components as dcc
import dash_html_components as html
img_rgb = np.array([[[255, 0, 0], [0, 255, 0], [0, 0, 255]],
[[0, 255, 0], [0, 0, 255], [255, 0, 0]]
], dtype=np.uint8)
fig = px.imshow(img_rgb)
app = dash.Dash()
app.layout = html.Div([
dcc.Graph(figure=fig)
])
app.run_server(debug=True)
He utilizado esta página de documentación (https://plotly.com/python/imshow/). En la parte inferior, dice lo siguiente:
En todas las partes de esta página donde veas fig.show(), puedes mostrar la misma figura en una aplicación Dash pasándola como argumento de figura al componente Graph del paquete integrado dash_core_components de esta manera:
import plotly.graph_objects as go # o plotly.express as px
fig = go.Figure() # o cualquier función de Plotly Express, por ejemplo, px.bar(...)
fig.add_trace( ... )
fig.update_layout( ... )
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div([
dcc.Graph(figure=fig)
])
app.run_server(debug=True, use_reloader=False) # Desactiva el recargador si estás en Jupyter
Entonces, ¿qué estoy haciendo mal?
davy.ai
Un problema posible es que los datos de la imagen pasados a
px.imshow()
están en tipo de datosuint8
. Este tipo de datos no es compatible con los gráficos de Plotly, incluido Dash. Para mostrar la imagen correctamente, el tipo de datos debe convertirse afloat32
. Aquí está el código modificado:Otro posible problema podría ser la compatibilidad de versiones entre Plotly y Dash. Ambas bibliotecas deben actualizarse a las versiones más recientes para garantizar la compatibilidad.