使用Plotly绘制单x轴散点图并标注HY_OAS列均值与区间最值
调整后可实现目标效果的代码如下
import plotly.express as px # 预先计算HY_OAS的三个核心指标,避免重复调用 hy_oas_min = Spreads['HY_OAS'].min() hy_oas_max = Spreads['HY_OAS'].max() hy_oas_mean = Spreads['HY_OAS'].mean() # 初始化散点图,标记均值位置 fig8 = px.scatter(x=[hy_oas_mean], y=[0], color_discrete_sequence=["#ff7f0e"], size=[100]) # 调整x轴范围匹配最值,隐藏刻度标签 fig8.update_xaxes( visible=True, showticklabels=False, range=[hy_oas_min, hy_oas_max] ) # 放宽y轴范围,预留文本标注的显示空间,隐藏刻度 fig8.update_yaxes( visible=True, showticklabels=False, range=[-0.15, 0.2] ) # 绘制代表取值范围的水平线 fig8.add_shape( type="line", x0=hy_oas_min, x1=hy_oas_max, y0=0, y1=0, line=dict(color="#1f77b4", width=2) ) # 添加最小值文本标注 fig8.add_annotation( x=hy_oas_min, y=-0.07, text=f"Min: {round(hy_oas_min, 2)}", showarrow=False, bgcolor="white", bordercolor="#1f77b4", borderpad=3 ) # 添加最大值文本标注 fig8.add_annotation( x=hy_oas_max, y=-0.07, text=f"Max: {round(hy_oas_max, 2)}", showarrow=False, bgcolor="white", bordercolor="#1f77b4", borderpad=3 ) # 添加均值文本标注 fig8.add_annotation( x=hy_oas_mean, y=0.07, text=f"Mean: {round(hy_oas_mean, 2)}", showarrow=False, bgcolor="white", bordercolor="#ff7f0e", borderpad=3 ) # 隐藏冗余图例 fig8.update_layout(showlegend=False) fig8.show()
可根据自己的需求调整标注的位置偏移、边框颜色、数值保留的小数位数等参数。
内容的提问来源于stack exchange,提问作者bigjdawg43
相关产品推荐
相关产品推荐

