如何在Plotly箱线图的指定箱形上叠加单个数据点?
在Plotly箱线图上叠加指定数据点
要在指定箱形上叠加单个数据点,核心是明确每个箱线图对应的y轴位置就是它的trace索引(从0开始计数)——因为你没有给go.Box指定y参数时,Plotly会自动按trace顺序为每个箱形分配y轴位置,第一个箱形对应y=0,第二个y=1,依此类推。
基于这个逻辑,你可以通过添加scatter trace实现叠加,修改后的代码如下:
import plotly.graph_objects as go import numpy as np N = 10 # 生成箱线图数据并保存原始数据(方便后续选点) box_data = [] for i in range(N): x_vals = 2.5 * np.sin(np.pi * i/N) + i/N + (1.5 + 0.5 * np.cos(np.pi*i/N)) * np.random.rand(10) box_data.append(x_vals) fig = go.Figure(data=[go.Box(x=vals) for vals in box_data]) # 示例:在第3个箱形(索引为2,从0开始计数)上叠加一个数据点 target_box_index = 2 # 这里用该箱形的最大值作为示例,可替换为任意自定义x值 point_x = np.max(box_data[target_box_index]) # 添加散点trace fig.add_trace(go.Scatter( x=[point_x], y=[target_box_index], # y值对应目标箱形的trace索引 mode="markers", marker=dict(size=12, color="red"), # 设置点样式,突出显示 showlegend=False # 不显示该散点的图例 )) fig.update_layout(height=600) fig.show()
补充说明:
- 若要在多个箱形上叠加点,可一次性传入多组x、y值,比如
x=[x1, x2]、y=[index1, index2],无需多次调用add_trace。 - 叠加的点的x值可以是任意自定义数值,不局限于箱形的原始数据,按需调整即可。
- 通过修改
marker的size、color、symbol等参数,可调整点的外观,让叠加效果更符合需求。
内容的提问来源于stack exchange,提问作者Marshall K
相关产品推荐
相关产品推荐

