【发布时间】:2018-08-15 19:13:33
【问题描述】:
我想绘制一个连接同事和电影偏好的二分图。如何在图中同时显示节点名称(电影名称或同事名称)和节点属性(无论是同事还是电影)?
我当前的代码只显示节点属性并删除节点名称。
我的代码:
BG = nx.Graph()
BG.add_nodes_from(employees, bipartite=0, _type='employee')
BG.add_nodes_from(movies, bipartite=1, _type='movie')
edgeinfo = pd.read_csv('Employee_Movie_Choices.txt', sep='\t')
edges = [tuple(x) for x in edgeinfo.values]
BG.add_edges_from(edges)
labels = dict((n,d['_type']) for n,d in BG.nodes(data=True))
%matplotlib notebook
import matplotlib.pyplot as plt
plt.figure()
pos = nx.spring_layout(BG)
edges = BG.edges()
nx.draw_networkx(BG, pos, edges=edges, labels=labels)
如果我创建标签元组,他会给我一个错误:
BG = nx.Graph()
BG.add_nodes_from(employees, bipartite=0, _type='employee')
BG.add_nodes_from(movies, bipartite=1, _type='movie')
edgeinfo = pd.read_csv('Employee_Movie_Choices.txt', sep='\t')
edges = [tuple(x) for x in edgeinfo.values]
BG.add_edges_from(edges)
labels = dict((n,d['_type']) for n,d in BG.nodes(data=True)) ###ik krijg hier naam movie en employee niet meer bij !!!
labels_new = [(k, v) for k, v in labels.items()]
#labels = [tuple(n,d['_type']) for n, d in BG.nodes(data=True)]
#nx.draw(BG, labels=labels)
%matplotlib notebook
import matplotlib.pyplot as plt
plt.figure()
pos = nx.spring_layout(BG)
edges = BG.edges()
nx.draw_networkx(BG, pos, edges=edges, labels=labels_new)
错误: ---> nx.draw_networkx(BG,pos,edges=edges,labels=labels_new) AttributeError: 'list' 对象没有属性 'items'
【问题讨论】: