Так как я получаю следующую ошибку с вашим фрагментом:
ValueError: недопустимое свойство, указанное для объекта типа plotly.graph_objs.sankey.Node: 'groups'
И так как я не знаю, какие версии у вас запущены для plotly, python (и Jupyter Notebook?), Я бы просто предложил вам реструктурировать ваши исходные данные и сделать группировку C1 и C2 в просто C, прежде чем вы построите сюжет. И имейте в виду, что Ссылки назначаются в порядке их появления в наборе данных , а цвета узлов назначаются в порядке построения графика.
Участок:
Код:
# imports
import pandas as pd
import numpy as np
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
# settings
init_notebook_mode(connected=True)
# Nodes & links
nodes = [['ID', 'Label', 'Color'],
[0,'A','blue'],
[1,'B','yellow'],
[2,'C','orange'],
[3,'D','purple'],
]
# links with your data
links = [['Source','Target','Value','Link Color'],
[0,1,3,'rgba(200, 205, 206, 0.6)'],
[0,2,5,'rgba(200, 205, 206, 0.6)'],
[0,3,5,'rgba(200, 205, 206, 0.6)'],
[1,2,6,'rgba(200, 205, 206, 0.6)'],
[2,3,6,'rgba(200, 205, 206, 0.6)'],
]
# Retrieve headers and build dataframes
nodes_headers = nodes.pop(0)
links_headers = links.pop(0)
df_nodes = pd.DataFrame(nodes, columns = nodes_headers)
df_links = pd.DataFrame(links, columns = links_headers)
# Sankey plot setup
data_trace = dict(
type='sankey',
domain = dict(
x = [0,1],
y = [0,1]
),
orientation = "h",
valueformat = ".0f",
node = dict(
pad = 10,
# thickness = 30,
line = dict(
color = "black",
width = 0
),
label = df_nodes['Label'].dropna(axis=0, how='any'),
color = df_nodes['Color']
),
link = dict(
source = df_links['Source'].dropna(axis=0, how='any'),
target = df_links['Target'].dropna(axis=0, how='any'),
value = df_links['Value'].dropna(axis=0, how='any'),
color = df_links['Link Color'].dropna(axis=0, how='any'),
)
)
layout = dict(
title = "Sankey Test",
height = 772,
font = dict(
size = 10),)
fig = dict(data=[data_trace], layout=layout)
iplot(fig, validate=False)
Информация о моей системе:
The version of the notebook server is: 5.6.0
The server is running on this version of Python:
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)]