如何在 power bi 或任何其他程序中创建仅显示公司员工位置转移的桑基图?

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

我想使用下表中的信息创建桑基图。我希望源位置(先前位置)在图中具有相同数量的目的地(新位置),以便每行只有一对一的流程。我遇到的问题是,当我在 power bi 中创建此图表时,它会在 power bi 中创建多个图层,其中一个位置将进入另一个位置,另一个位置将进入另一个位置......即柏林到伦敦到香港。这不是我想要的。关于如何创建一个桑基图,其中一个点流向另一个点,有什么建议吗?我不介意这是在哪个程序中完成的。

python powerbi sankey-diagram
1个回答
0
投票

我不相信桑基图仅仅通过设计就可以这样工作。您会期望节点的多个副本,这会使绘图混乱到可能无法读取的程度(如果我理解您的请求)。

也许圆形流程图更好?基本上是一个圆圈中的桑基。

有一个 python 库,如下所示

pip install pycirclize
import pandas as pd
from pycirclize import Circos

cities = [
    "London",
    "Milan",
    "Tokyo",
    "Brussels",
    "Berlin",
    "Riyadh",
    "Shanghai",
    "Hong Kong",
    "Seoul",
    "Dubai",
    "New York",
    "Sydney",
    "Singapore",
    "Brisbane",
    "Melbourne",
    "Kuala Lumpur",
    "Perth",
]

# create route matrix
row_names = cities
col_names = cities
matrix_data = [
    [0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
]
matrix_df = pd.DataFrame(matrix_data, index=row_names, columns=col_names)

# Initialize Circos from matrix for plotting Chord Diagram
circos = Circos.initialize_from_matrix(
    matrix_df,
    space=5,
    cmap="tab10",
    label_kws=dict(size=12),
    link_kws=dict(ec="black", lw=0.5, direction=1),
)

circos.savefig("circlize_plot.png")

您可以将

row_names
col_names
简化为仅分别出现在
From
To
列中的城市,但我只是做了一个粗略的版本。您还可以自动根据输入构建此矩阵。

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