来自 Dataframe 的饼图
Pie Chart from Dataframe
我正在尝试根据数据 table 中的数据创建一个 plotly.express
饼图。
数据源自 Mongo 查询,这些查询填充数据 table.
使用我这里的数据,数据 table 按预期工作,但我没有饼图。
谁能告诉我如何为饼图正确加载此数据框?
animal_id
和breed
是数据中两列的名称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()
的调用
我正在尝试根据数据 table 中的数据创建一个 plotly.express
饼图。
数据源自 Mongo 查询,这些查询填充数据 table.
使用我这里的数据,数据 table 按预期工作,但我没有饼图。
谁能告诉我如何为饼图正确加载此数据框?
animal_id
和breed
是数据中两列的名称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()