如何在Plotly Python累积直方图X轴特定点添加计数文本
实现Plotly累积直方图指定位置添加计数文本
实现步骤
Plotly Express的直方图会自动计算分箱和累积计数,要在指定位置添加文本,需要先提取生成的直方图数据,再手动添加注释:
生成基础累积直方图
先创建数据并生成直方图对象,暂不直接展示:import pandas as pd import plotly.express as px df = pd.DataFrame({'N':[1,1,1,1,2,3,3,4,5,6,7,7,7,7,7]}) fig = px.histogram(df, x='N', cumulative=True, nbins=7)提取直方图数据
从生成的图表对象中获取分箱的x值和对应的累积计数y值:hist_data = fig.data[0] x_vals = hist_data.x y_vals = hist_data.y筛选目标位置
筛选出x值为3的倍数(3、6、9...)的索引:target_indices = [i for i, x in enumerate(x_vals) if x % 3 == 0]添加文本注释
遍历目标位置,在对应条形上方添加累积计数字本:for idx in target_indices: x_val = x_vals[idx] y_val = y_vals[idx] fig.add_annotation( x=x_val, y=y_val, text=str(y_val), showarrow=False, yshift=10, # 让文本偏移到条形上方,避免遮挡 font=dict(size=12) )展示图表
fig.show()
说明
- 这里
nbins=7刚好让每个整数N对应一个分箱,x值直接匹配原始数据的N值;如果分箱规则变化,需要根据hist_data.x的实际值调整筛选逻辑。 yshift参数可以调整文本与条形的距离,避免重叠。
内容的提问来源于stack exchange,提问作者quant
相关产品推荐
相关产品推荐

