create background image for a plot using plotly/dash

血红的双手。 提交于 2021-01-29 05:54:42

问题


I'm trying to create an plot for plotly/dash with a background image. The plot is created, but the background image doesn't. The file and the image are located in the same directory.

Am I missing something?

import base64
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objects as go

IMAGE_FILENAME1 = 'link.png'
image1 = base64.b64encode(open(IMAGE_FILENAME1, 'rb').read())


fig = go.Figure(
    data=[go.Bar(y=[2, 1, 3])],
    layout_title_text="Native Plotly rendering in Dash"
)

fig.update_layout( images= [dict(
                    #source="KU.png",                    
                    source='data:image/png;base64,{}'.format(image1.decode()),
                    #xref="container",
                    #yref="container",
                    layer="below")])


app = dash.Dash(__name__)

app.layout = html.Div([
    dcc.Graph(id="graph", figure=fig),
])

app.run_server(debug=True)

getting the properties of fig:

fig
Figure({
    'data': [{'type': 'bar', 'y': [2, 1, 3]}],
    'layout': {'images': [{'layer': 'below',
                           'source': ('data:image/png;base64,iVBORw0K' ... 'Q7B0QA13afSQHVAAAAAElFTkSuQmCC')}],
               'template': '...',
               'title': {'text': 'Native Plotly rendering in Dash'}}

回答1:


My suggestion may not solve the problem, since it is unclear what kind of graph the image does not show. I have tried to display the image I have with your code. The only code I modified is the following one line.

import base64
import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objects as go
from jupyter_dash import JupyterDash 

IMAGE_FILENAME1 = './data/plotly_graphing_libraries_1.png'
image1 = base64.b64encode(open(IMAGE_FILENAME1, 'rb').read())

app = JupyterDash(__name__)
# app = dash.Dash(__name__)

fig = go.Figure(data=[go.Bar(x=[0,1,2], y=[2, 1, 3])], layout_title_text="Native Plotly rendering in Dash")

fig.add_layout_image(dict(source='data:image/png;base64,{}'.format(image1.decode()),
                          xref="x",
                          yref="y",
                          x=0, y=3,
                          sizex=2,
                          sizey=2, 
                          sizing="stretch",
                          opacity=0.5,
                          layer="below"))

fig.update_layout(template="plotly_white")

app.layout = html.Div(children=[
    dcc.Graph(id="graph", figure=fig),
])

app.run_server(mode='inline')



来源:https://stackoverflow.com/questions/65453880/create-background-image-for-a-plot-using-plotly-dash

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!