Как установить ограничения в коллекции патчей matplotlib

Я использую следующий фрагмент кода для отображения сети, края которой окрашены в соответствии с их весом:

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,
    pos,
    node_size=node_sizes,
    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)

Получается следующий график:

введите здесь описание изображения

Проблема в том, что цветная полоса меняется в соответствии с установленными мной ограничениями, но цвет краев точно такой же, что означает, что они отображают неправильные значения. Как я могу это исправить?


person volfi    schedule 12.01.2021    source источник


Ответы (1)


Хорошо, я смог решить эту проблему, вы можете установить ограничения в 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
)
person volfi    schedule 12.01.2021