Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何添加一个简单的;色条“;用python绘制网络图?_Python_Networkx_Colorbar - Fatal编程技术网

如何添加一个简单的;色条“;用python绘制网络图?

如何添加一个简单的;色条“;用python绘制网络图?,python,networkx,colorbar,Python,Networkx,Colorbar,我想知道如何简单地在绘图中添加颜色条。我必须编写以下代码,它通过读取gml文件来绘制图形。我有一组数字要指定给边作为它们的颜色,我只想在绘图旁边看到一个颜色条,这样我就可以分析颜色。当我添加plt.colorbar(g)时,它会给出错误。如何在不经历实际构建颜色条的所有过程的情况下添加颜色条 H = nx.read_gml('./network1.gml') EAM = EigenVectorCentrality( EAMatrix ); x = []; for eam in EAM[0]:

我想知道如何简单地在绘图中添加颜色条。我必须编写以下代码,它通过读取gml文件来绘制图形。我有一组数字要指定给边作为它们的颜色,我只想在绘图旁边看到一个颜色条,这样我就可以分析颜色。当我添加
plt.colorbar(g)
时,它会给出错误。如何在不经历实际构建颜色条的所有过程的情况下添加颜色条

H = nx.read_gml('./network1.gml')

EAM = EigenVectorCentrality( EAMatrix );

x = [];
for eam in EAM[0]:
    x.append(eam[0]);

 degs =  H.degree().values();
 plt.clf()
 g = nx.draw(H, with_labels=0, edge_color=x, node_size=70, font_size=9, width=1)
 plt.axis('equal')     
 plt.colorbar(g);
 plt.show()
下面是Nerwork1.gml文件:

graph
[
   node
   [
    id 1
   ]
 node
[
    id 2
]
node
[
    id 3
]
node
[
    id 4
]
    node
[
    id 5
]
    node
[
    id 6
]
    node
[
    id 7
]
    node
[
    id 8
]
    node
[
    id 9
]
    node
[
    id 10
]
    node
[
    id 11
]
edge
[
    source 1
    target 2
]
edge
[
    source 1
    target 2
]
edge
[
    source 1
    target 3
]
edge
[
    source 1
    target 4
]
edge
[
    source 1
    target 5
]
edge
[
    source 2
    target 3
]
edge
[
    source 2
    target 4
]
edge
[
    source 2
    target 5
]
edge
[
    source 3
    target 4
]
edge
[
    source 3
    target 5
]
edge
[
    source 4
    target 5
]
edge
[
    source 6
    target 7
]
edge
[
    source 6
    target 8
]
edge
[
    source 6
    target 9
]
edge
[
    source 6
    target 10
]
edge
[
    source 7
    target 8
]
edge
[
    source 7
    target 9
]

edge
[
    source 7
    target 10
]
edge
[
    source 8
    target 9
]
edge
[
    source 8
    target 10
]
edge
[
    source 9
    target 10
]
edge
[
    source 5
    target 6
]
edge
[
    source 5
    target 11
]
 edge
 [
    source 6
    target 11
 ]
]

由于没有您的数据,我使用了networx主页上的。但在代码中使用它对您来说应该是微不足道的

import matplotlib.pyplot as plt
import networkx as nx

G=nx.star_graph(20)
pos=nx.spring_layout(G)
colors=range(20)
cmap=plt.cm.Blues
vmin = min(colors)
vmax = max(colors)
nx.draw(G, pos, node_color='#A0CBE2', edge_color=colors, width=4, edge_cmap=cmap,
           with_labels=False, vmin=vmin, vmax=vmax)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin = vmin, vmax=vmax))
sm._A = []
plt.colorbar(sm)
plt.show()

这是个好办法,但我同意,有点遗憾的是
nx.draw
只返回
None
nx.draw
返回
None
,这就是
plt.colorbar
失败的原因。另外:你能把文件
network1.gml
放在某个地方吗?我把network.gml添加到了问题中。谢谢,它正在工作,但遗憾的是没有一个简单的方法可以做到这一点,这一切都是因为
nx.draw
像你说的那样返回
None
。谢谢!这是新的位置:我一直收到这个错误:
AttributeError:“module”对象没有属性“normalize”
引用
norm=plt.normalize(vmin=vmin,vmax=vmax)
。我在任何地方都找不到它……效果很好,不过我不得不在“normalize”中大写“n”。对于那些想知道为什么评论不再有意义的人来说:这篇文章已经编辑过了。现在“正常化”中有一个资本。