作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关系图上执行聚类,目前正在使用 networkx
来可视化结果:
G = nx.from_numpy_matrix(X)
layout = nx.fruchterman_reingold_layout(G)
nx.draw_networkx(G, pos=layout, with_labels=True, node_color=predict, cmap=plt.cm.coolwarm, vmin=0, vmax=1)
是否可以获得颜色条?只需使用 plt.colorbar()
就会出现错误:
RuntimeError: No mappable was found to use for colorbar creation. First define a mappable such as an image (with imshow) or a contour set (with contourf).
documentation 中没有任何选项。我也愿意使用另一个包进行可视化,只要它与 Python 3 兼容。
最佳答案
这是一个基于空手道俱乐部图的演示:
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
G = nx.karate_club_graph()
df = (pd.DataFrame(list(G.degree), columns=['node','degree'])
.set_index('node'))
df['club'] = pd.Series({node:data['club']
for node,data in G.nodes(data=True)})
df['color'] = df.groupby('club')['degree'].transform(lambda c: c/c.max())
df.loc[df['club']=='Officer', 'color'] *= -1
layout = nx.fruchterman_reingold_layout(G)
vmin = df['color'].min()
vmax = df['color'].max()
cmap = plt.cm.coolwarm
nx.draw_networkx(G, pos=layout, with_labels=True, node_color=df['color'],
cmap=cmap, vmin=vmin, vmax=vmax)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
sm.set_array([])
cbar = plt.colorbar(sm)
结果:
关于python - 如何在networkx.draw_networkx中获取颜色条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49572089/
我是一名优秀的程序员,十分优秀!