You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly箱线图上添加贴合的额外数据点(Python实现)

解决Plotly箱线图叠加数据点不贴近的问题

我来帮你搞定这个问题!你现在遇到的散点和箱线图没对齐贴近的情况,主要是因为没有明确固定箱线图与散点的y轴位置,再加上y轴自动范围的影响,导致两者看起来分开了。咱们可以通过几个小调整来解决:

关键修改点

  • 给箱线图显式指定y轴位置,确保它固定在y=0处
  • 调整散点的y值与箱线图保持一致,同时优化标记样式让它更显眼
  • 限制y轴的范围,缩小垂直方向的空间,让散点紧贴箱线图

修改后的完整代码

import numpy as np
import plotly.graph_objects as go
import plotly.offline

# 假设你的duplicates和sample_id变量已提前定义
x = np.fromiter(duplicates.values(), dtype=float)
fig = go.Figure()

# 保留你原有的布局设置
fig.update_layout(
    autosize=False, 
    width=400, 
    height=150, 
    paper_bgcolor="White", 
    plot_bgcolor='rgba(0,0,0,0)', 
    hovermode=False, 
    margin=dict(l=10, r=10, b=10, t=10, pad=4), 
    boxmode='group', 
    boxgroupgap=0.25, 
    boxgap=0.25
)

# 给箱线图添加y参数,固定在y=0的位置
fig.add_trace(go.Box(
    x=x, 
    y=[0]*len(x),  # 显式指定每个数据点的y值为0,确保箱线图位置固定
    showlegend=False
))

# 调整散点的y值为0,同时优化标记样式增强辨识度
fig.add_trace(go.Scatter(
    x=np.array([duplicates[sample_id]]),  # 单个值转成数组避免维度错误
    y=np.array([0]), 
    mode='markers', 
    showlegend=False,
    marker=dict(size=10, color='red')  # 增大标记尺寸,用醒目颜色突出
))

fig.update_xaxes(title='')
# 隐藏y轴刻度,并限制y轴范围,压缩垂直空间让散点紧贴箱线图
fig.update_yaxes(showticklabels=False, range=[-0.1, 0.1])

my_div = plotly.offline.plot(fig, output_type='div', show_link=False, config=dict(displayModeBar=False))

额外说明

  • 我把np.array(duplicates[sample_id])调整为np.array([duplicates[sample_id]]),如果duplicates[sample_id]是单个数值,这样能确保生成单个散点,避免维度不匹配的问题
  • 通过将y轴范围限制在[-0.1, 0.1],垂直方向的空间被压缩,散点会完全贴合在箱线图的y轴位置上
  • 调整标记的大小和颜色可以让叠加的点更容易被识别

内容的提问来源于stack exchange,提问作者nuin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 14:17:27