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

如何在Dash Plotly中设置marginal_y边际图的格式?

Plotly Express散点图边际Y子图属性调整方案

问题场景

使用Plotly Express创建带边际Y小提琴子图的散点图,代码如下:

fig = px.scatter(df_filtrada, 
                 x=df_filtrada.index, 
                 y=pto, 
                 marginal_y = "violin")

设置主图背景透明后,边际子图背景同步变化,但无法移除边际轴网格,需要调整边际子图的show_grid、标题等属性。


解决方案

Plotly Express生成的边际子图会被分配独立的轴对象(如yaxis2对应边际Y轴),可以通过直接定位这些对象来修改属性:

1. 移除边际Y轴网格

边际Y轴对应布局中的yaxis2,可以用两种方式关闭网格:

# 方式1:通过update_layout直接修改yaxis2配置
fig.update_layout(yaxis2=dict(showgrid=False))

# 方式2:用update_yaxes指定secondary_y=True(边际轴属于次级Y轴)
fig.update_yaxes(showgrid=False, secondary_y=True)

2. 调整边际子图的其他属性

  • 修改边际子图标题:直接设置yaxis2的title属性:
fig.update_layout(yaxis2=dict(title="数值分布小提琴图"))
  • 单独设置边际子图背景色:如果需要和主图背景区分,可单独定义其背景透明度:
fig.update_layout(
    yaxis2=dict(
        plot_bgcolor="rgba(255,255,255,0)",
        paper_bgcolor="rgba(255,255,255,0)"
    )
)
  • 调整小提琴图自身样式:边际子图的小提琴trace是独立的,可通过update_traces加选择器定位修改:
# 修改小提琴图的线条颜色和宽度
fig.update_traces(line_color="#2ca02c", line_width=2, selector=dict(type="violin"))

完整示例代码

import plotly.express as px
import pandas as pd

# 模拟测试数据
df_filtrada = pd.DataFrame(
    {"pto": [2,5,3,7,4,6,3,8]},
    index=pd.date_range("2024-01-01", periods=8)
)
pto = "pto"

# 创建散点图+边际Y小提琴图
fig = px.scatter(df_filtrada, 
                 x=df_filtrada.index, 
                 y=pto, 
                 marginal_y="violin")

# 设置主图透明背景
fig.update_layout(
    plot_bgcolor="rgba(255,255,255,0)",
    paper_bgcolor="rgba(255,255,255,0)"
)

# 移除边际Y轴网格
fig.update_yaxes(showgrid=False, secondary_y=True)

# 设置边际子图标题
fig.update_layout(yaxis2=dict(title="数值分布"))

# 调整小提琴图样式
fig.update_traces(line_color="#ff7f0e", selector=dict(type="violin"))

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:01:29