【问题标题】:Pie Chart from Dataframe来自数据框的饼图
【发布时间】:2020-12-13 23:49:23
【问题描述】:

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

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

非常感谢任何帮助!

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 记录的示例:

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

【问题讨论】:

  • 欢迎来到 SO 并祝贺您提出第一个问题。一点建议:如果您希望人们对您的代码进行故障排除,一个好主意是发布您的数据样本。否则,风险是人们会继续讨论下一个问题。
  • @SergedeGossondeVarennes 谢谢。我会进行编辑。

标签: python pandas plotly plotly-dash plotly-express


【解决方案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() 的调用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多