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

如何生成包含子图的Plotly Chart Studio分享链接

问题原因

chart_studio.plotly.plot() 接口原生不支持直接传入Figure对象列表生成多图分享链接,你之前传入单个图表能运行,是因为这个接口的入参要求必须是单个完整的Plotly Figure对象,直接传列表会触发参数校验错误。
另外你贴的初始代码里有两处容易踩坑的小问题:一是dcc.Grapgh拼写错误,正确写法是dcc.Graph;二是go.Bar()、go.Indicator()生成的是Trace轨迹对象,不是完整Figure,不管是本地Dash渲染还是上传Chart Studio,最好都包装成完整Figure对象再调用,避免出现渲染异常。

实现方案

根据你要的分享效果选对应方案即可:

方案1:生成单个分享链接,打开即可看到全部三张图

用Plotly自带的make_subplots方法把三张图组合到同一个Figure对象里,再上传到Chart Studio就能拿到单链接。注意Indicator这类指标组件需要单独指定布局占位列,否则会和其他图表重叠,参考代码:

import chart_studio.plotly as py
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import plotly.express as px

def funct(data, x_data, y_data ):
    # 初始化3行1列的子图布局,给不同类型的图表指定对应类型
    fig = make_subplots(
        rows=3, cols=1,
        specs=[
            [{"type": "xy"}],    # 第一行放折线图
            [{"type": "indicator"}], # 第二行放计数指标卡
            [{"type": "xy"}]     # 第三行放柱状图
        ],
        subplot_titles=("Trend Line", "Total Count", "Bar Chart")
    )

    # 逐个添加图表内容
    line_fig = px.line(x=x_data, y=y_data)
    fig.add_trace(line_fig.data[0], row=1, col=1)

    indi_fig = go.Indicator(value = len(data), title='Total Count')
    fig.add_trace(indi_fig.data[0], row=2, col=1)
    # 手动指定指标卡的坐标轴范围,避免显示错位
    fig.update_yaxes(domain=[0.4, 0.6], row=2, col=1)

    bar_trace = go.Bar(x=x_data, y=y_data)
    fig.add_trace(bar_trace, row=3, col=1)

    # 调整整体高度,防止图表挤压
    fig.update_layout(height=900, showlegend=False)
    # 上传单个组合好的Figure,生成可访问的分享链接
    return py.plot(fig, auto_open=True)

方案2:保留三个图表的独立自定义布局,分别生成链接

如果你不想把三张图拼到同一个子图容器里,要和之前Dash里的自定义布局效果完全一致,就把三个图表分别包装成独立Figure,逐个调用py.plot()上传拿到三个独立链接,之后你可以自己写个简单的嵌入页,按你要的排版把三个图表的iframe嵌进去就行,参考代码:

import chart_studio.plotly as py
import plotly.graph_objects as go
import plotly.express as px

def funct(data, x_data, y_data ):
    # 每个图表都包装成独立的完整Figure对象
    line_fig = px.line(x=x_data, y=y_data, title="Trend Line")
    indi_fig = go.Figure(go.Indicator(value = len(data), title='Total Count'))
    bar_fig = go.Figure(go.Bar(x=x_data, y=y_data))
    
    # 分别上传,关闭自动打开,拿到三个独立链接
    line_share_url = py.plot(line_fig, auto_open=False, filename="trend-line-chart")
    indi_share_url = py.plot(indi_fig, auto_open=False, filename="total-count-indicator")
    bar_share_url = py.plot(bar_fig, auto_open=False, filename="bar-chart")

    # 后续可以按你需要的布局拼接展示页
    return line_share_url, indi_share_url, bar_share_url

小提示:上传时可以通过filename参数指定图表在Chart Studio仓库里的文件名,方便后续管理。

内容的提问来源于stack exchange,提问作者Ritesh Kankonkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:01:07