【发布时间】:2019-06-26 23:43:07
【问题描述】:
所以我使用 networkx 库制作了我的图,它是一个单部分图。当我贴上标签时,它似乎不正确,它变得混乱了。有些单词的长度比其他单词长,并且超出了节点的边界。可以调整我的图表以使一切看起来清晰易懂吗?
而且我还希望节点像一个点,并且标签出现在节点上而不是节点内。
这样
我制作的图表..
这是代码..
import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
from networkx.algorithms import community
from networkx.algorithms import bipartite
G1 = nx.read_edgelist("abcd.txt")
print(nx.info(G1))
c = bipartite.color(G1)
nx.set_node_attributes(G1, c, 'bipartite')
type1 = {n for n, d in G1.nodes(data=True) if d['bipartite']==0}
type2 = {n for n, d in G1.nodes(data=True) if d['bipartite']==1}
G = bipartite.projected_graph(G1, type1)
type2g = bipartite.projected_graph(G1, type2)
pos = nx.spring_layout(G,k=0.30,iterations=50)
nx.is_bipartite(G1)
#average clustering
nx.average_clustering(G1)
#Diameter
print("Diameter:",nx.diameter(G1))
options = {
'node_color': 'purple',
'node_size': 40,
'line_color': 'yellow',
'linewidths': 0,
'width': 0.3,
}
#degeree plotting
def plot_degree_distribution(wiki):
degs = {}
for n in wiki.nodes():
deg = wiki.degree(n)
if deg not in degs:
degs[deg] = 0
degs[deg] += 1
items = sorted(degs.items())
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([k for (k, v) in items], [v for (k, v) in items])
ax.set_xscale('log')
ax.set_yscale('log')
plt.title("Degree Distribution")
fig.savefig("degree_distribution.png")
# plot_degree_distribution(G)
d = [] # create a set
for n in G.nodes():
d.append(G.degree(n))
ec = [] # create a set
for e in G.edges():
if (G.degree(e[0]) > G.degree(e[1])):
ec.append(G.degree(e[0]))
else:
ec.append(G.degree(e[1]))
pos = nx.spring_layout(G,k=1.5, iterations=200)
factor = 25 # to change the size of nodes with respect to their degree
nx.draw_networkx(G, pos,
edge_color=ec, edge_cmap=plt.cm.plasma, # edge color
node_color=d, cmap=plt.cm.plasma, # node color
node_size=[x * factor for x in d]) # node sizse
plt.savefig ("simple_graph.png")
fig = plt.gcf()
fig.set_size_inches((10,10))
plt.show()
【问题讨论】:
标签: python matplotlib graph networkx