来自 Dataframe 的饼图

Pie Chart from Dataframe

我正在尝试根据数据 table 中的数据创建一个 plotly.express 饼图。
数据源自 Mongo 查询,这些查询填充数据 table.
使用我这里的数据,数据 table 按预期工作,但我没有饼图。
谁能告诉我如何为饼图正确加载此数据框?

animal_idbreed是数据中两列的名称frame/datatable.

非常感谢任何帮助!

dash_table.DataTable(
    id='datatable-id',
    columns=[
        {"name": i, "id": i, "deletable": False, "selectable": True} for i in df.columns
    ],
    data=df.to_dict('records'),
    editable=False,
    filter_action="native",
    sort_action="native",
    sort_mode="multi",
    column_selectable=False,
    row_selectable="single",
    row_deletable=False,
    selected_rows=[],
    page_action="native",
    page_current=0,
    page_size=10
),

html.Div(
    dcc.Graph(
        id="pie-chart"
    )
)

@app.callback(
    Output("pie-chart", "figure"),
    [Input("datatable-id", "data")]
)
def generate_chart(data):
    dfc = pd.DataFrame(list(data))

    fig = px.pie(dfc, values='animal_id', names='breed')

    return fig

通过查询MongoDB数据库

将源数据加载到pandas数据框中
df = pd.DataFrame.from_records(db.collection.find({}))

这是数据库记录之一的示例:

> db.collection.findOne()
{
    "_id" : ObjectId("5fccfabbfb3f7580efe722cd"),
    "" : 1,
    "age_upon_outcome" : "3 years",
    "animal_id" : "A746874",
    "animal_type" : "Cat",
    "breed" : "Domestic Shorthair Mix",
    "color" : "Black/White",
    "date_of_birth" : "2014-04-10",
    "datetime" : "2017-04-11 09:00:00",
    "monthyear" : "2017-04-11T09:00:00",
    "name" : "",
    "outcome_subtype" : "SCRP",
    "outcome_type" : "Transfer",
    "sex_upon_outcome" : "Neutered Male",
    "location_lat" : 30.5066578739455,
    "location_long" : -97.3408780722188,
    "age_upon_outcome_in_weeks" : 156.767857142857
}

想通了。这样的回调:

@app.callback(
    Output("pie", "figure"),
    [Input("datatable-id", "data")]
)
def generate_chart(data):
    dff = pd.DataFrame.from_dict(data)

    fig = px.pie(
        dff,
        names='breed',
    )

    return fig

我猜 values 暗示是对 px.pie()

的调用