python - 将计数添加到 Plotly 箱线图
问题描述
我有一个相对简单的问题,但在网上找不到任何解决该问题的答案。从一个简单的箱线图开始:
import plotly.express as px
df = px.data.iris()
fig = px.box(
df, x='species', y='sepal_length'
)
val_counts = df['species'].value_counts()
我现在想在val_counts
图中添加(在这个数据集中,每个物种 50 个),最好是在以下任何一个地方:
- 在中线之上
- 在最大/最小线的顶部
- 悬浮箱内部
我怎样才能做到这一点?
解决方案
使用我在这个答案中提出的相同方法:Change Plotly Boxplot Hover Data
- 计算箱线图计算的所有度量以及您要计算的附加度量
- 将条形线迹覆盖在箱形图迹线上,因此悬停具有所需的所有措施
import plotly.express as px
df = px.data.iris()
# summarize data as per same dimensions as boxplot
df2 = df.groupby("species").agg(
**{
m
if isinstance(m, str)
else m[0]: ("sepal_length", m if isinstance(m, str) else m[1])
for m in [
"max",
("q75", lambda s: s.quantile(0.75)),
"median",
("q25", lambda s: s.quantile(0.25)),
"min",
"count",
]
}
).reset_index().assign(y=lambda d: d["max"] - d["min"])
# overlay bar over boxplot
px.bar(
df2,
x="species",
y="y",
base="min",
hover_data={c:not c in ["y","species"] for c in df2.columns},
hover_name="species",
).update_traces(opacity=0.1).add_traces(px.box(df, x="species", y="sepal_length").data)
推荐阅读
- ios - 如何访问导航窗格(左窗格)中创建的文件夹的路径?
- symfony - Symfony3 配置组件验证
- python-3.x - 如何以向后的方式将列表分组为子列表
- python - 使用带有令牌的 Google API [Django & AllAuth]
- php - 如何在子主题中覆盖父customizer.php
- c++ - C++/QT 安全终止阻塞线程
- java - 在不同类中使用带有代码的按钮
- python - 需要 PYTHON JSONtoDICT 帮助 - 似乎 python 正在将我的 json-dictionary 转换解释为列表
- javascript - switch 语句不返回值
- python - Python Pandas-根据给定窗口计算某列的总和并从某个值开始