Python Plotly Sankey 图未显示

问题描述 投票:0回答:1

我正在 Jupyter Notebook Python 3 (ipykernel) 中工作,并尝试通过导入带有数据的 json 文件来使用plotly 创建桑基图。当我运行代码时,我没有收到任何错误,但是,没有绘图,只有空输出。

我正在使用此处显示的“带有彩色链接的更复杂的桑基图”示例:https://plotly.com/python/sankey-diagram/#reference

有什么想法吗?谢谢!

这是代码:

import plotly.graph_objs as go
import json

with open("sankeywhst.json", 'r') as j:
     data = json.loads(j.read())

fig = go.Figure(data=[go.Sankey(
    valueformat = ".0f",
    valuesuffix = "TWh",
    # Define nodes
    node = dict(
      pad = 15,
      thickness = 15,
      line = dict(color = "black", width = 0.5),
      label =  data['data'][0]['node']['label'],
      color =  data['data'][0]['node']['color']
    ),
    # Add links
    link = dict(
      source =  data['data'][0]['link']['source'],
      target =  data['data'][0]['link']['target'],
      value =  data['data'][0]['link']['value'],
      label =  data['data'][0]['link']['label'],
      color =  data['data'][0]['link']['color']
))])

fig.update_layout(title_text="Flow of WHST Files",
                  font_size=10)
fig.show()

这是 json: “数据”: [ { “类型”:“桑基”, “领域”: { “X”: [ 0, 1 ], “y”:[ 0, 1 ] }, “方向”:“h”, “值格式”:“.0f”, “值后缀”:“太瓦时”, “节点”:{ “垫”:15, “厚度”:15, “线”: { “颜色:黑色”, “宽度”:0.5 }, “标签”: [ “所有可能产生的”, “生成”, “未生成”, “48小时内摄入”, “48小时后摄入”, “48小时内处理”, “48小时后处理(已经晚了)”, “48小时内可视化”, “48小时后可视化(否则准时)”, “48小时后可视化(已经晚了)”, “排除 Fitbit Sleep 文件”, “不适用于可视化:Fitbit Steps 文件”, “不用于可视化:Fitbit Steps 文件(已经晚了)”, “不用于可视化:Fitbit Steps 文件(从未生成)”, “从未想象过(否则准时)”, “从未想象过(已经晚了)”, “从未可视化(从未生成)” ], “颜色”: [ “rgba(120,0,189,0.8)”, “rgba(61,0,255,0.8)”, “rgba(217, 0, 0, 0.8)”, "rgba(45, 100, 216, 0.8)", “rgba(255,128,54,0.8)”, "rgba(0, 210, 143, 0.8)", "rgba(210, 94, 0, 0.8)", "rgba(18, 197, 0, 0.8)", "rgba(255, 210, 0, 0.8)", "rgba(210, 94, 0, 0.8)", “rgba(195,0,197,0.8)”, “rgba(158,0,197,0.8)”, "rgba(210, 94, 0, 0.8)", “rgba(217, 0, 0, 0.8)”, "rgba(255, 210, 0, 0.8)", "rgba(210, 94, 0, 0.8)", “rgba(217,0,0,0.8)” ] }, “关联”: { “来源”: [ 0, 0, 1、 1、 2、 2、 3、 4、 5、 5、 5、 5、 5、 6、 6、 6
], “目标”: [ 1、 2、 3、 4、 13、 16、 5、 6、 10、 7、 8、 11、 14、 9、 12、 15
], “价值”: [ 924、 156、 891、 33、 24、 132、 891、 33、 9、 279、 410、 193、 0, 24、 8、 1 ], “颜色”: [ “rgba(120,0,189,0.2)”, “rgba(120,0,189,0.2)”, “rgba(61,0,255,0.2)”, “rgba(61,0,255,0.2)”, “rgba(217, 0, 0, 0.2)”, “rgba(217, 0, 0, 0.2)”, "rgba(45, 100, 216, 0.2)", "rgba(255, 128, 54, 0.2)", "rgba(0, 210, 143, 0.2)", "rgba(0, 210, 143, 0.2)", "rgba(0, 210, 143, 0.2)", "rgba(0, 210, 143, 0.2)", "rgba(0, 210, 143, 0.2)", "rgba(210, 94, 0, 0.2)", "rgba(210, 94, 0, 0.2)", “rgba(210, 94, 0, 0.2)” ], “标签”: [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ”” ] } }], “布局”: { "title": {"text": "WHST 组合数据流"}, “宽度”:1118, “身高”:772, “字体”:{ “尺寸”:10 }, “更新菜单”:[ { “y”:1, “纽扣”: [ { “标签”:“光”, “方法”:“重新布局”, “args”:[“paper_bgcolor”,“白色”] }, { “标签”:“黑暗”, “方法”:“重新布局”, “args”:[“paper_bgcolor”,“黑色”] } ] }, { “y”:0.9, “纽扣”: [ { "label": "厚", “方法”:“重新设计”, "args": [ "节点厚度", 15 ] }, { "label": "薄", “方法”:“重新设计”, "args": [ "节点厚度", 8] } ] }, { “y”:0.8, “纽扣”: [ { "label": "小间隙", “方法”:“重新设计”, "args": [ "node.pad", 15 ] }, { "label": "间隙较大", “方法”:“重新设计”, "args": [ "node.pad", 20] } ] }, { “y”:0.7, “纽扣”: [ { “标签”:“快照”, “方法”:“重新设计”, "args": [ "安排", "捕捉" ] }, { "label": "垂直", “方法”:“重新设计”, "args": [ "排列", "垂直"] }, { "label": "自由形式", “方法”:“重新设计”, “args”:[“安排”,“自由形式”] }, { "label": "固定", “方法”:“重新设计”, "args": [ "安排", "固定"] } ] }, { “y”:0.6, “纽扣”: [ { "label": "水平", “方法”:“重新设计”, “args”:[“方向”,“h”] }, { "标签": "垂直", “方法”:“重新设计”, “args”:[“方向”,“v”] } ] } ] } }

python json jupyter-notebook plotly sankey-diagram
1个回答
0
投票

这里有两个站点解释了如何在 Jupyter Notebooks 中输出绘图: 第一个通过使用额外的库 Plotly 文档

第二个通过更改或显式调用渲染器 Plotly 渲染器。 希望这些选项之一适合您。

© www.soinside.com 2019 - 2024. All rights reserved.