如何在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
相关产品推荐
相关产品推荐

