如果我传递预先计算的四分位数,如何将最小值和最大值添加到plotly.graph_objects.Box?

问题描述 投票:0回答:1

我使用示例官方文档中的代码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()

enter image description here 我已经计算了最小值和最大值并想使用它们。

这就是我传递包含所有记录的数据框时绘图的样子。 Plotly 自行计算 q1,q3,max,min - 除了性能之外,一切都很好。我认为这是因为值显示在绘图上,并且渲染起来非常繁重。 enter image description here

我喜欢先计算聚合,如果可能的话使用它们。所以,我计算了q1,q3,max,min。您可以看到 BrightData 组的最大值大于经验。 enter image description here

我的期望是经验和最大值可以显示在一个图中,并且在这里具有不同的值。

python plotly jupyter-lab
1个回答
0
投票

我最近遇到了类似的问题。数据点太多且图形加载缓慢。尝试仅绘制所选上栅栏和下栅栏之外的点,然后更新预先计算的 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()
© www.soinside.com 2019 - 2024. All rights reserved.