我正在 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”]
}
]
}
]
}
}
这里有两个站点解释了如何在 Jupyter Notebooks 中输出绘图: 第一个通过使用额外的库 Plotly 文档。
第二个通过更改或显式调用渲染器 Plotly 渲染器。 希望这些选项之一适合您。