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

如何在Plotly中绘制无垂直线且自定义轮廓宽度的直方图

在Plotly中实现Matplotlib histtype='step' 式直方图效果

需求说明

需要实现类似Matplotlib中histtype='step'的直方图:仅显示直方图轮廓(无垂直线)、自定义轮廓线宽度,同时叠加半透明填充的直方图。

Matplotlib 参考代码

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.size'] = 10
plt.rcParams['figure.dpi'] = 600
x = np.random.randn(400)
plt.hist(x, histtype='step', linewidth=5,color='green')
plt.hist(x, alpha=0.5, color='green')

Plotly 实现方案

Plotly没有直接对应histtype='step'的参数,但可以通过两个直方图图层叠加模拟效果:一个图层仅显示轮廓线,另一个图层显示半透明填充。

完整代码示例

import plotly.graph_objects as go
import numpy as np

# 生成随机数据
x = np.random.randn(400)

# 创建画布
fig = go.Figure()

# 添加仅显示轮廓的直方图(模拟step效果)
fig.add_trace(go.Histogram(
    x=x,
    marker=dict(
        color='rgba(0,128,0,0)',  # 填充色设为完全透明
        line=dict(
            width=5,  # 自定义轮廓线宽度
            color='green'  # 轮廓线颜色
        )
    ),
    opacity=1,
    showlegend=False
))

# 添加半透明填充的直方图
fig.add_trace(go.Histogram(
    x=x,
    marker=dict(color='green'),
    opacity=0.5,
    showlegend=False
))

# 可选:统一分箱规则,避免两层分箱不一致
fig.update_traces(xbins=dict(start=x.min(), end=x.max(), size=0.2))

# 布局调整
fig.update_layout(
    font=dict(size=10),
    height=600,
    width=800
)

fig.show()

参数说明

  • 轮廓图层:通过marker.color='rgba(0,128,0,0)'将填充色设为完全透明,仅保留marker.line定义的轮廓线宽度和颜色
  • 填充图层:通过opacity=0.5设置半透明效果,与轮廓层颜色保持一致
  • 若需确保两层直方图分箱完全对齐,可给两个图层添加相同的xbins参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:37:38