Я пытаюсь создать связь между задачами. Некоторые из них соединены напрямую друг с другом, в то время как другие проходят через этот большой прямоугольник, который я обвел, вместо того, чтобы подключаться напрямую (это то, что мне нужно). Как мне удалить этот узел?
def generate_links_and_nodes(dataframe):
cleaned_links = []
for _, row in dataframe.iterrows():
q10_tasks = set(row['q10'].split(', '))
q3_tasks = set(row['q3'].split(', '))
q11_tasks = set(row['q11'].split(', '))
# Create links between q10 and q3
for q10 in q10_tasks:
for q3 in q3_tasks:
if q10 != q3:
cleaned_links.append((q10, q3))
# Create links between q3 and q11
for q3 in q3_tasks:
for q11 in q11_tasks:
if q3 != q11:
cleaned_links.append((q3, q11))
# DataFrame from links
links_df = pd.DataFrame(cleaned_links, columns=["source", "target"])
# Collect unique nodes
unique_nodes = sorted(set(pd.concat([links_df['source'], links_df['target']])))
node_indices = {node: i for i, node in enumerate(unique_nodes)}
# Map sources and targets to node indices
sources = links_df['source'].map(node_indices).tolist()
targets = links_df['target'].map(node_indices).tolist()
values = [1] * len(links_df) # Default weight of 1 for each link
return sources, targets, values, unique_nodes
# Generate the Sankey diagram inputs
sources, targets, values, nodes = generate_links_and_nodes(df)
# Create the Sankey diagram
fig = go.Figure(data=[go.Sankey(
node=dict(
pad=25,
thickness=70,
line=dict(color="black", width=0.5),
label=nodes # Only sub-tasks are shown
),
link=dict(
source=sources,
target=targets,
value=values
)
)])
Я пытаюсь создать связь между задачами. Некоторые из них соединены напрямую друг с другом, в то время как другие проходят через этот большой прямоугольник, который я обвел, вместо того, чтобы подключаться напрямую (это то, что мне нужно). Как мне удалить этот узел? [code]def generate_links_and_nodes(dataframe): cleaned_links = [] for _, row in dataframe.iterrows(): q10_tasks = set(row['q10'].split(', ')) q3_tasks = set(row['q3'].split(', ')) q11_tasks = set(row['q11'].split(', '))
# Create links between q10 and q3 for q10 in q10_tasks: for q3 in q3_tasks: if q10 != q3: cleaned_links.append((q10, q3))
# Create links between q3 and q11 for q3 in q3_tasks: for q11 in q11_tasks: if q3 != q11: cleaned_links.append((q3, q11))
# DataFrame from links links_df = pd.DataFrame(cleaned_links, columns=["source", "target"])
# Collect unique nodes unique_nodes = sorted(set(pd.concat([links_df['source'], links_df['target']]))) node_indices = {node: i for i, node in enumerate(unique_nodes)}
# Map sources and targets to node indices sources = links_df['source'].map(node_indices).tolist() targets = links_df['target'].map(node_indices).tolist() values = [1] * len(links_df) # Default weight of 1 for each link