【问题标题】:Create a dataset for chord diagram and plot为和弦图创建数据集并绘图
【发布时间】:2019-07-10 21:19:22
【问题描述】:

我正在尝试将以下数据集转换为正确的格式,然后将其绘制成和弦图。

    a   b   c   d   e   f   g   h
0   1   0   0   0   0   1   0   0
1   1   0   0   0   0   0   0   0
2   1   0   1   1   1   1   1   1
3   1   0   1   1   0   1   1   1
4   1   0   0   0   0   0   0   0
5   0   1   0   0   1   1   1   1
6   1   1   0   0   1   1   1   1
7   1   1   1   1   1   1   1   1
8   1   1   0   0   1   1   0   0
9   1   1   1   0   1   0   1   0
10  1   1   1   0   1   1   0   0
11  1   0   0   0   0   1   0   0
12  1   1   1   1   1   1   1   1
13  1   1   1   1   1   1   1   1
14  0   1   1   1   1   1   1   0

结果将是显示变量之间所有可能组合的和弦图,每个流宽度是数据集中特定组合出现的计数 - 例如,在上面的数据集中 a + b 计数为 7(其中两者是 1)。

【问题讨论】:

    标签: python python-3.x pandas numpy holoviews


    【解决方案1】:

    我不太了解哪个可能是最好的和弦图库,但我可以帮助你一点:

    首先我们在 pandas 数据集中定义我们的数据

    import pandas as pd
    
    data = [
        [1,   0,   0,   0,   0,   1,   0,   0],
        [1,   0,   0,   0,   0,   0,   0,   0],
        [1,   0,   1,   1,   1,   1,   1,   1],
        [1,   0,   0,   0,   0,   0,   0,   0],
        [1,   0,   1,   1,   0,   1,   1,   1],
        [0,   1,   0,   0,   1,   1,   1,   1],
        [1,   1,   0,   0,   1,   1,   1,   1],
        [1,   1,   1,   1,   1,   1,   1,   1],
        [1,   1,   0,   0,   1,   1,   0,   0],
        [1,   1,   1,   0,   1,   0,   1,   0],
        [1,   1,   1,   0,   1,   1,   0,   0],
        [1,   0,   0,   0,   0,   1,   0,   0],
        [1,   1,   1,   1,   1,   1,   1,   1],
        [1,   1,   1,   1,   1,   1,   1,   1],
        [0,   1,   1,   1,   1,   1,   1,   0]]
    
    dataframe = pd.DataFrame(data, columns = ['a','b','c','d','e','f','g','h'])
    

    现在我们实现算法

    def relationship (columnsList, dataframe):
        result = 0
        for index, row in dataframe.iterrows():
            equal = True
            for col in range(len(columnsList)-1):
                if (equal and row[columnsList[col]] == row[columnsList[col+1]]):
                    equal = True
                else:
                    equal = False
            result += 1 if equal else 0
    
        return result
    
    

    一些测试

    >>> relationship (['a','b','d'], dataframe) # a+b+d
    3
    >>> relationship (['a','b','h'], dataframe) # a+b+h
    4
    >>> relationship (['a','b'], dataframe) # a+b
    7
    

    图表由您决定,希望对您有所帮助!

    【讨论】:

    • 谢谢!这有效,虽然它只显示成对组合,而我需要找到所有组合 - 例如a+b、a+b+c、a+d+e 等等
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2017-09-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2022-01-10
    • 2020-12-02
    • 2013-03-23
    相关资源
    最近更新 更多