仅含 x 轴的散点图

Scatterplot with x axis only

我有一个数据框 'Spreads',其中一列是 'HY_OAS'。我的目标是绘制一条水平线(基本上表示 'HY_OAS' 的一系列值)并在该线上绘制列平均值。此外,我希望 x 轴 min/max 成为该列的 min/max,并且我希望包含注释 min/max 的文本框。问题是我不确定如何继续,因为我只有以下内容。感谢您提供的所有帮助。目标是第二张图,当前代码是第一张图

fig8 = px.scatter(x=[Spreads['HY_OAS'].mean()], y=[0])
fig8.update_xaxes(visible=True,showticklabels=False,range=[Spreads['HY_OAS'].min(),Spreads['HY_OAS'].max()])
fig8.update_yaxes(visible=True,showticklabels=False, range=[0,0])

根据您的描述和编码

  • 在数据框中生成一些示例数据
  • 沿 x 轴散布值并对 y 轴使用常量
  • 添加均值标记
  • 格式图
  • 添加所需的注释
import numpy as np
import plotly.express as px
import pandas as pd

# simulate some data
Spreads = pd.DataFrame({"HY_OAS": np.sin(np.random.uniform(0, np.pi * 2, 50))})
# scatter values along x-axis and and larger point for mean
fig = px.scatter(Spreads, x="HY_OAS", y=np.full(len(Spreads), 0)).add_traces(
    px.scatter(x=[Spreads.mean()], y=[0])
    .update_traces(marker={"color": "red", "size": 20})
    .data
)

# fix up figure config
fig.update_layout(
    xaxis_visible=False,
    yaxis_visible=False,
    showlegend=False,
    paper_bgcolor="rgba(0,0,0,0)",
    plot_bgcolor="rgba(0,0,0,0)",
)

# finally required annootations
fig.add_annotation(x=Spreads["HY_OAS"].mean(), y=0, text=Spreads["HY_OAS"].mean().round(4))
fig.add_annotation(x=Spreads["HY_OAS"].min(), y=0, text=Spreads["HY_OAS"].min().round(2), showarrow=False, xshift=-20)
fig.add_annotation(x=Spreads["HY_OAS"].max(), y=0, text=Spreads["HY_OAS"].max().round(2), showarrow=False, xshift=20)

直线

  • 基础图如下
  • 然后使用相同的代码添加注释和配置布局
fig = px.line(x=[Spreads["HY_OAS"].min(), Spreads["HY_OAS"].max()], y=[0,0]).add_traces(
    px.scatter(x=[Spreads.mean()], y=[0])
    .update_traces(marker={"color": "red", "size": 20})
    .data
)