簡體   English   中英

mne connectivity_circle / 和弦圖

[英]mne connectivity_circle / chord diagram

我正在嘗試使用plot_connectivity_circle庫中的mne_connectivity.viz創建和弦圖。

我的數據類似於以下內容,其中letternumber代表單獨的節點, count代表這些節點之間的連接數:

import random
import string
random.seed(10)

df = pd.DataFrame({'letter':[random.choice(string.ascii_lowercase) for x in range(20)],
                  'number':[str(random.randint(0,22)) for x in range(20)],
                  'Count':[random.randint(20,50) for x in range(20)]})

數據框

mne的文檔引用了示例,其中連接分數的方矩陣用於創建與我的用例不同的和弦圖。

但是,它還指出,如果還傳遞了與正確的節點名稱列表相對應的 arrays 個索引,則一維矩陣可用於連接性分數。 因此我假設df.Count可以用來表示連通性分數?

根據我的數據,我不知道如何以正確的順序將相關數據傳遞給node_namesindices arguments,希望能提供一些指導!


作為參考,我使用holoviews庫實現了類似的可視化,但發現缺少自定義選項。 該可視化的代碼和 output 作為示例包含在下面:

import numpy as np
import holoviews as hv
from holoviews import opts, dim
hv.extension('bokeh')
hv.output(size=350)

nodes = list(set(df['letter'].tolist() + df['number'].tolist()))
nodes = hv.Dataset(pd.DataFrame(nodes, columns=['node']))

chord = hv.Chord((df, nodes))
chord.opts(
    opts.Chord( 
               labels = 'node', label_text_font_size='12pt', 
               node_color='node', node_cmap='Category20', node_size=10, 
               edge_color='number', edge_cmap='Category20', edge_alpha=0.9, edge_line_width=1)
) 

example_viz

作為記錄,我已經找到了一個可以接受的解決這個問題的方法。

我返回原始數據(上面是groupbycount得到df.Count值的結果)並使用crosstab()生成包含連接分數的 dataframe。 我參考了這篇文章的答案以尋求指導

然后我使用to_numpy()將結果轉換為鄰接矩陣,可以將其傳遞給plot_connectivity_circle()con參數。

然后可以將crosstab()中的列列表傳遞給node_names參數。

我現在沒有時間發布我的代碼的工作示例,但希望以后有時間。

如果任何熟悉mneplot_connectivity_cirlce的使用的人可以幫助回答原始問題,給出原始帖子中描述的表格中的數據,我將非常有興趣了解它是如何完成的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM