如何获取Plotly直方图的Y轴最大值以添加目标竖线?
Plotly直方图添加目标竖线:获取y轴最大值方案
核心思路
绘制直方图后,直接从已生成的直方图数据中提取y轴最大值,以此定义竖线的高度范围,确保竖线能覆盖直方图的最高区域。
完整代码示例
import plotly.graph_objects as go import pandas as pd # 替换为你的实际数据和目标值 df = pd.DataFrame({"error": [1.2, -0.8, 2.1, -1.5, 0.5, -2.3, 1.8, -0.3]}) target = 1.5 # 绘制直方图 fig = go.Figure() fig.add_trace(go.Histogram(x=df["error"], showlegend=False)) # 提取直方图的y轴最大值(即最高分箱的频数) hist_y_max = max(fig.data[0].y) # 添加x=target的灰色虚线竖线 fig.add_trace(go.Scatter( x=[target, target], y=[0, hist_y_max], mode="lines", line=dict(color="gray", dash="dash"), showlegend=False )) # 添加x=-target的灰色虚线竖线 fig.add_trace(go.Scatter( x=[-target, -target], y=[0, hist_y_max], mode="lines", line=dict(color="gray", dash="dash"), showlegend=False )) fig.show()
适配布局调整的备选方案
如果后续手动调整了y轴范围(比如放大y轴留出空隙),可以直接读取当前布局的y轴上限,确保竖线高度匹配最新视图:
# 示例:手动扩展y轴范围 fig.update_layout(yaxis_range=[0, hist_y_max * 1.1]) # 获取当前y轴的最大值 current_y_max = fig.layout.yaxis.range[1] # 基于当前y轴上限重新绘制竖线 fig.add_trace(go.Scatter( x=[target, target], y=[0, current_y_max], mode="lines", line=dict(color="gray", dash="dash"), showlegend=False ))
内容的提问来源于stack exchange,提问作者Pietair
相关产品推荐
相关产品推荐

