嗨,所以我试图使用networkx和matplotlib绘制图形,但是,尽管将轴设置为“ on”,并且通过向该轴添加x / y限制,我的x和y轴也没有显示。
我尝试实现其他人的代码,以查看轴是否会显示但没有运气。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_edges_from(
[('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'),
('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')])
val_map = {'A': 1.0,
'D': 0.5714285714285714,
'H': 0.0}
values = [val_map.get(node, 0.25) for node in G.nodes()]
# Specify the edges you want here
red_edges = [('A', 'C'), ('E', 'C')]
edge_colours = ['black' if not edge in red_edges else 'red'
for edge in G.edges()]
black_edges = [edge for edge in G.edges() if edge not in red_edges]
# Need to create a layout when doing
# separate calls to draw nodes and edges
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, cmap=plt.get_cmap('jet'),
node_color = values, node_size = 500)
nx.draw_networkx_labels(G, pos)
nx.draw_networkx_edges(G, pos, edgelist=red_edges, edge_color='r', arrows=True)
nx.draw_networkx_edges(G, pos, edgelist=black_edges, arrows=False)
plt.show()
来自另一个线程的一些示例代码:how to draw directed graphs using networkx in python?
我什至尝试了他提供的代码,甚至可以从他的屏幕截图中看到他能够显示轴,但是从我的角度来看我什么也没得到。
答案 0 :(得分:1)
在networkx
的某些早期版本中,刻度和标签未设置。现在它们是-主要是因为轴上的数字很少具有任何特殊含义。
但是,如果这样做,则需要再次将它们打开。
fig, ax = plt.subplots()
nx.draw_networkx_nodes(..., ax=ax)
#...
ax.tick_params(left=True, bottom=True, labelleft=True, labelbottom=True)
答案 1 :(得分:0)
很老的了,但是我对接受的解决方案有疑问。
nx.draw_networkx_nodes
与nx.draw
并不完全相同(特别是默认情况下它不会绘制边缘)。但是使用draw
不会单独显示轴。
添加plt.limits("on")
可以将draw
(及其语法)用于轴。
fig, ax = plt.subplots()
nx.draw(G,...,ax=ax) #notice we call draw, and not draw_networkx_nodes
limits=plt.axis('on') # turns on axis
ax.tick_params(left=True, bottom=True, labelleft=True, labelbottom=True)