【发布时间】:2021-10-18 07:45:58
【问题描述】:
我正在尝试使用 Plotly 将分组箱线图绘制为网格,其中包含来自数据框的数据。例如,如果我们有一个数据框,
import plotly.express as px
df = px.data.tips()
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
我可以如下绘制一个图(例如:day = Friday):
import plotly.graph_objects as go
import plotly.express as px
df_plot=df[df['day']== 'Fri']
fig = px.box(df_plot, x='time', y="total_bill", color="sex",width=600, height=400)
fig.show()
如果我想绘制多个子图,例如,每天一个,我不知道如何在 plotly 中做到这一点。这是我尝试过的:
fig = make_subplots(rows=2, cols=2)
for v in range(4):
for i, met in enumerate(df['day'].unique()): #'Sun', 'Sat', 'Thur', 'Fri'
df_plot=df[df['day']== met]
for t in px.box(df_plot, x="time", y=f"total_bill", color='sex').data:
fig.add_trace(t, row=(v//2)+1, col=(v%2)+1)
fig.update_layout(
boxmode="group", margin={"l": 0, "r": 0, "t": 20, "b": 0}
).update_traces(showlegend=True)
这给出了一个看起来很奇怪的情节。我究竟做错了什么?另外,在带有情节的子情节网格中,如何为每个情节绘制一个图例而不是图例。
【问题讨论】:
标签: python pandas plotly subplot