Python / Dash - TypeError: Объект типа 'Figure' не поддерживает сериализацию в формате JSON - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь создать простое приложение. Цель состоит в том, чтобы создать раскрывающийся список и использовать раскрывающийся список в качестве фильтра. Отфильтрованные данные будут показаны на карте Google. Вот мой код:

К сожалению, он продолжает выдавать мне следующее сообщение об ошибке: «Ошибка типа: объект типа 'Figure' не поддерживает сериализацию в формате JSON". Я следовал тому же формату, используя выпадающее меню для фильтрации набора данных, и код работал нормально. Эта проблема возникала только тогда, когда я пытался отобразить данные. Но для этого школьного проекта мне нужно использовать Google Map API в Python, и это пока единственный способ, которым я знаю. Был бы признателен, если бы вы могли посоветовать, как обойти эту проблему. Большое спасибо

#import necessary packages
import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd
import gmaps
import gmaps.datasets
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
gmaps.configure(api_key="") #Google Map API
df = pd.read_excel('') #read the Map file in

def create_data(choice): #this function takes in a keyword and filter the dataframe based on the keyword
    data = df[df['Primary'] == choice]
    return data

def create_map(data): #create a map with customized annotations
    info_box_template = """
        <dl>
        <dt>Community Partner: </dt><dd>{CommunityPartner}</dd>
        <dt>Address: </dt><dd>{Address}</dd>
        </dl>
        """
    dict1 = data.to_dict('records')
    partner_info = [info_box_template.format(**partner) for partner in dict1]
    marker_layer = gmaps.symbol_layer(data[['Lat', 'Longitude']], info_box_content=partner_info,
                                     fill_color='rgba(0, 255, 0, 0.0)', stroke_color='rgba(200, 0, 0, 0.4)', scale=2)

    omaha_coordinates = (41.25, -95.99)
    fig = gmaps.figure(center=omaha_coordinates, zoom_level=12) #create the foundation map focused on Omaha first
    fig.add_layer(marker_layer)
    return fig

app = dash.Dash('') #create a Dash app

available_indicators = df.Primary.unique() #create a list of unique primary areas for options in the app.layout section later

app.layout = html.Div([ #this part is the dropdown
    dcc.Dropdown(
        id='dropdown-a',
        options=[{'label': i, 'value': i} for i in available_indicators], 
    multi=False, placeholder='Filter by Primary Mission...'),
    html.Div(id='output-a')
])

@app.callback( #this callback is to create the result of the dropdown action
    dash.dependencies.Output('output-a', 'children'),
    [dash.dependencies.Input('dropdown-a', 'value')])

def update_map(dropdown_value): #update the table
    word = create_data(dropdown_value)
    fig = create_map(word)
    return fig

app.css.append_css({"external_url": "https://codepen.io/chriddyp/pen/bWLwgP.css"}) #the css to make it more beautiful

if __name__ == '__main__':
    app.run_server()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...