如何解决如何对 Sankey 图中的节点进行排序Plotly
我想实现一种可视化,显示一种状态到另一种状态之间的变化频率,将这些状态表示为数字。 My data looks like this 并调用 df_sankey
我正在考虑按照 documentation 中的示例绘制桑基图。所以我想要一列状态 A 为 I1,I2,...,I20 和另一列状态 B 为 F1,F2,F20。然后每对值之间的频率将表示为加权线as follows。
但是,我无法根据状态数对列中的节点进行排序。 This is what I want to achieve.
这是我尝试过的:
#Create Labels
source = pd.DataFrame(np.arange(1,21),columns = ['source'])['source'].apply(lambda x: 'I' + str(x))
target = pd.DataFrame(np.arange(1,columns = ['target'])['target'].apply(lambda x: 'F' + str(x))
labels = pd.concat([source,target],axis=0).reset_index(drop=True)
#X-node
x_node = np.concatenate((np.ones(int(len(source)))*0.1,np.ones(int(len(target)))),axis = None)
#Y-node
y_node = np.tile(np.linspace(0,100,len(source)),2)
#Create Dataframe
df_nodes = pd.DataFrame(data = {'label': labels,'X': x_node,'Y': y_node})
#PLOT
fig = go.figure(data=[go.Sankey(
arrangement='snap',node = dict(
pad = 15,thickness = 20,line = dict(color = "black",width = 0.5),label = df_nodes['label'],color = "blue",x = df_nodes['X'],y = df_nodes['Y']
),link = dict(
source = df_sankey['State_A']-1,#Indices correspond to labels,eg A1,A2,A1,B1,...
target = df_sankey['State_B']+20-1,value = df_sankey['Freq']
))])
fig.update_layout(title_text="Basic Sankey Diagram",font_size=10)
fig.show()
有什么想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。