3D 网络图链接颜色/离散颜色图

问题描述

我使用 this 指南制作了一个 3D 网络图,效果非常好,但是当涉及到对某些边缘颜色使用 value 变量时,它只会改变部分边缘颜色的颜色网络,其他部分未着色。

数据有this格式

代码与指南中的相同:

N=len(data['nodes'])
L=len(data['links'])

Edges=[(data['links'][k]['source'],data['links'][k]['target']) for k in range(L)]
G=ig.Graph(Edges,directed=False)
layt=G.layout('kk',dim=3)

labels=[]
group=[]

for node in data['nodes']:
  labels.append(node['name'])
  group.append(node['group'])

Xn=[]
Yn=[]
Zn=[]

for k in range(N):
  Xn+=[layt[k][0]]
  Yn+=[layt[k][1]]
  Zn+=[layt[k][2]]

Xe=[]
Ye=[]
Ze=[]

for e in Edges:
  Xe+=[layt[e[0]][0],layt[e[1]][0],None]# x-coordinates of edge ends
  Ye+=[layt[e[0]][1],layt[e[1]][1],None]
  Ze+=[layt[e[0]][2],layt[e[1]][2],None]

trace1=go.Scatter3d(x=Xe,y=Ye,z=Ze,mode='lines',line=dict(color='rgb(125,125,125)',width=1),hoverinfo='none')

trace2=go.Scatter3d(x=Xn,y=Yn,z=Zn,mode='markers',name='actors',marker=dict(symbol='circle',size=6,color=group,colorscale='Viridis',line=dict(color='rgb(50,50,50)',width=0.5)),text=labels,hoverinfo='text')
axis=dict(showbackground=False,showline=False,zeroline=False,showgrid=False,showticklabels=False,title='')

layout = go.Layout(
         title="123",width=1000,height=1000,showlegend=False,scene=dict(
             xaxis=dict(axis),yaxis=dict(axis),zaxis=dict(axis),))

data=[trace1,trace2]
fig=go.figure(data=data,layout=layout)
fig.show()

我刚刚为链接颜色添加了一行:

value = []
for i in df['links']:
    value.append(i['value'])

然后将其用作线条的颜色,同时将 trace2 中的节点颜色更改为黑色:

trace1=go.Scatter3d(x=Xe,line=dict(color=value,width=5,showscale=True),hoverinfo='none')

输出看起来像这样,只是部分链接彩色3d network link colors

有关如何为网络的所有链接着色的任何提示?我还尝试通过将 value 变量转换为字符串来将其用作离散变量;不幸的是,颜色字符串不适用于 Scatter3d。对于如何使用 value 变量作为变量每个值的离散颜色图,您有什么建议吗?提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)