[英]mne connectivity_circle / chord diagram
我正在嘗試使用plot_connectivity_circle
庫中的mne_connectivity.viz
創建和弦圖。
我的數據類似於以下內容,其中letter
和number
代表單獨的節點, 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_names
和indices
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)
)
作為記錄,我已經找到了一個可以接受的解決這個問題的方法。
我返回原始數據(上面是groupby
和count
得到df.Count
值的結果)並使用crosstab()
生成包含連接分數的 dataframe。 我參考了這篇文章的答案以尋求指導
然后我使用to_numpy()
將結果轉換為鄰接矩陣,可以將其傳遞給plot_connectivity_circle()
的con
參數。
然后可以將crosstab()
中的列列表傳遞給node_names
參數。
我現在沒有時間發布我的代碼的工作示例,但希望以后有時間。
如果任何熟悉mne
和plot_connectivity_cirlce
的使用的人可以幫助回答原始問題,給出原始帖子中描述的表格中的數據,我將非常有興趣了解它是如何完成的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.