You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Plotly Express中的填充矩形移至背景图层?

解决Plotly散点图中垂直填充矩形覆盖散点的问题

要让add_vrect()添加的粉色矩形置于散点下方的背景层,只需在调用add_vrect()时添加layer="below"参数即可——该参数默认值为"above",会让矩形覆盖在所有数据轨迹之上。

修改后的完整代码

import numpy as np
import plotly.express as px

def plot(x,y):
    fig = px.scatter(
        x=x,
        y=y,
        error_y=[0] * len(y),
        error_y_minus=y
    )

    # 添加layer="below"参数将矩形置于背景层
    fig.add_vrect(x0=0, x1=np.pi, line_width=0, fillcolor="pink", layer="below")
    tickvals = [0,np.pi/2,np.pi,np.pi*3/2,2*np.pi]
    ticktext = ["0","$\\frac{\\pi}{2}$","$\\pi$","$\\frac{3\\pi}{2}$","$2\\pi$"]  # 修正原ticktext的数值匹配错误
    layout = dict(
        title="demo",
        xaxis_title="X",
        yaxis_title="Y",
        title_x=0.5,   
        margin=dict(l=10,t=20,r=0,b=40),
        height=300,
        xaxis=dict(
            tickangle=0,
            tickvals = tickvals,
            ticktext=ticktext,
        ),
        yaxis=dict(
            showgrid=True,
            zeroline=False,
            showline=False,
            showticklabels=True
        )
    )

    fig.update_traces(
        marker_size=14,
    )    
    fig.update_layout(layout)
    
    fig.show()
    return

n = 20
x = np.linspace(0.0, 2*np.pi, n)
y = np.sin(x)

plot(x,y)

关键说明

  • layer参数直接控制矩形的图层位置:
    • "above"(默认):矩形显示在所有数据轨迹(如散点)上方
    • "below":矩形显示在所有数据轨迹下方,作为背景元素

另外顺带修正了原代码中ticktext的一处错误,将$\\frac{3\\pi}{4}$改为$\\frac{3\\pi}{2}$,使其与对应的tickvals(np.pi*3/2)数值匹配。

内容的提问来源于stack exchange,提问作者lucky1928

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 23:01:10