如何解决如何在 matplotlib patchcollection 中设置限制
我使用以下代码来显示一个网络,其中边缘根据其权重着色:
import matplotlib as mpl
import matplotlib.pyplot as plt
import networkx as nx
seed = 13648 # Seed random number generators for reproducibility
G = nx.random_k_out_graph(10,3,0.5,seed=seed)
pos = nx.spring_layout(G,seed=seed)
node_sizes = [3 + 10 * i for i in range(len(G))]
M = G.number_of_edges()
edge_colors = range(2,M + 2)
edge_alphas = [(5 + i) / (M + 4) for i in range(M)]
cmap = plt.cm.plasma
nodes = nx.draw_networkx_nodes(G,pos,node_size=node_sizes,node_color="indigo")
edges = nx.draw_networkx_edges(
G,arrowstyle="->",arrowsize=10,edge_color=edge_colors,edge_cmap=cmap,width=2,)
# set alpha value for each edge
for i in range(M):
edges[i].set_alpha(edge_alphas[i])
pc = mpl.collections.PatchCollection(edges,cmap=cmap)
pc.set_array(edge_colors)
plt.colorbar(pc)
ax = plt.gca()
ax.set_axis_off()
plt.show()
产生如下图:
我想手动更改颜色图的限制。为此,我使用:
pc.set_clim(vmin=0,vmax=60)
产生如下图:
问题是,颜色条确实根据我设置的限制而变化,但边缘的颜色完全相同,这意味着它们显示的值不正确。我该如何解决这个问题?
解决方法
好的我已经解决了,你可以在 draw_networkx_edges 中设置限制为
edges = nx.draw_networkx_edges(
G,pos,node_size=node_sizes,arrowstyle="->",arrowsize=10,edge_color=edge_colors,edge_cmap=cmap,width=2,edge_vmin=0,edge_vmax=60
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。