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

如何为Plotly条形图设置虚线或点状的边框样式?

解决代码

import plotly.graph_objects as go

data={"years":[2019,2020,2021,2022],
      "total_value":[100000000000,220000000000,350000000000,410000000000]}

def bar_styled(data):
    blank = 'rgba(0,0,0,0)'
    colors =["#FED241", "#FED241", "#143DCB", blank]

    fig = go.Figure(data=[go.Bar(
        x=data['years'],
        y=data['total_value'],
        marker_color=colors,
        marker_line_width=3
    )])

    fig.update_layout(title_text=None, paper_bgcolor=blank, 
                      height=300, margin={"b":4, "t":4, "l":8, "r":8 })
    
    color_list=fig.data[0]["marker"]["color"]
    fig.data[0]["marker"]['line']["color"]=['#FED241' if val == blank else  blank for val in color_list]
    fig.update_xaxes(type='category')

    # 新增:给2022年的柱条添加虚线边框
    # 获取2022年柱条的坐标范围
    bar_x_pos = 3 # 分类轴x从0开始计数,2022是第4个,索引为3
    bar_y_max = data['total_value'][-1]
    bar_width = 0.4 # 默认柱条宽度,可根据实际调整

    fig.add_shape(
        type="rect",
        x0=bar_x_pos - bar_width/2,
        y0=0,
        x1=bar_x_pos + bar_width/2,
        y1=bar_y_max,
        line=dict(
            color="#FED241",
            width=3,
            dash="dot" # 可选dash(虚线)、dot(点状)、dashdot等样式
        ),
        fillcolor=blank
    )
    
    return fig

bar_styled(data)

修改说明

  • 由于 Plotly go.Bar 的marker.line属性未开放虚线样式配置,所以采用额外添加矩形形状的方式实现虚线边框效果
  • 你可以调整line.dash的参数修改边框样式,可选值包括dash、dot、dashdot,也可以传入自定义的线段间隔数组
  • 如果需要适配不同的柱条宽度,可在go.Bar中显式设置width参数,保证形状和柱条尺寸完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:18:04