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

如何在Plotly Dash中使用dash-svg引用本地SVG文件?

解决Dash中引用本地SVG作为头部内容的问题

问题原因

你之前的写法错误地将SVG文件路径放在了Image组件的children参数中,但dash-svg的Image对应SVG原生的<image>标签,该标签是通过href属性指定资源路径的,children在这里不具备加载图像的作用,所以只显示了空白框。

正确实现方式

方式1:修正dash-svg组件的用法

将SVG文件路径传递给Image组件的href参数,同时确保Svg的viewBox属性与你的SVG文件实际尺寸匹配(否则会导致图像缩放异常):

from dash import Dash, html
from dash_svg import Svg, Image

app = Dash(__name__)

app.layout = html.Nav(
    children=[
        html.H6('Page Title'),
        Svg(
            children=[
                # 用href指定SVG路径,而非children
                Image(href='assets/my_svg.svg', height="2rem", width="auto")
            ],
            viewBox='0 0 24 24'  # 替换为你的SVG实际宽高,比如原SVG是100x70就写0 0 100 70
        )
    ]
)

if __name__ == '__main__':
    app.run_server(debug=True)

方式2:直接使用html.Img组件(更简洁)

如果不需要SVG容器的特殊功能(如滤镜、复杂缩放等),直接用Dash原生的html.Img组件更简单,Dash会自动处理assets文件夹的资源路径:

from dash import Dash, html

app = Dash(__name__)

app.layout = html.Nav(
    children=[
        html.H6('Page Title'),
        html.Img(
            src='assets/my_svg.svg',
            style={'height': '2rem', 'width': 'auto'}
        )
    ]
)

if __name__ == '__main__':
    app.run_server(debug=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:42:19