0

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

animal_id是数据框/数据表中breed两列的名称。

任何帮助深表感谢!

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
}
4

1 回答 1

1

弄清楚了。这样的回调:

@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()

于 2020-12-19T18:58:06.670 回答