我使用示例官方文档中的代码https://plotly.com/python/box-plots/ ->
Box Plot With Precomputed Quartiles
。在这种情况下,可以使用 q1 进行混合,使用 q3 进行最大值。
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Box(q1=[ 1, 2, 3 ], median=[ 4, 5, 6 ],
q3=[ 7, 8, 9 ], lowerfence=[-1, 0, 1],
upperfence=[7, 8, 9], mean=[ 2.2, 2.8, 3.2 ],
sd=[ 0.2, 0.4, 0.6 ], notchspan=[ 0.2, 0.4, 0.6 ], name="Precompiled Quartiles"))
fig.show()
这就是我传递包含所有记录的数据框时绘图的样子。 Plotly 自行计算 q1,q3,max,min - 除了性能之外,一切都很好。我认为这是因为值显示在绘图上,并且渲染起来非常繁重。
我喜欢先计算聚合,如果可能的话使用它们。所以,我计算了q1,q3,max,min。您可以看到 BrightData 组的最大值大于经验。
我的期望是经验和最大值可以显示在一个图中,并且在这里具有不同的值。
我最近遇到了类似的问题。数据点太多且图形加载缓慢。尝试仅绘制所选上栅栏和下栅栏之外的点,然后更新预先计算的 IQR 值。
df_orig = pd.read_csv(os.path.join(POST_PROC_F, "ttfb_lat.csv"))
out_box = df_orig.groupby('vendor')['ttfb'].describe() #defaults to percentiles=[.25, .5, .75] but you can include whatever you like
out_outliers = df_orig[~df_orig['ttfb'].within(df_orig.groupby('vendor')['ttfb'].transform(lambda x: x.quantile(0.25)),
df_orig.groupby('vendor')['ttfb'].transform(lambda x: x.quantile(0.75)))]
fig = go.Figure()
for vendor in out_box.index:
fig.add_trace(go.Box(x=[vendor],
y=out_outliers[out_outliers['vendor']==vendor]['ttfb']
q1=[out_box.loc[vendor, '25%']],
median=[out_box.loc[vendor, 'median']],
q3=[out_box.loc[vendor, '75%']],
mean=[out_box.loc[vendor, 'mean']],
name=vendor,
marker_color='#1f77b4',
showlegend=False,
orientation='v') )
fig.show()