У меня есть несколько узлов, поступающих из сценария, которые я хочу отобразить на графике. Ниже я хочу использовать стрелку, чтобы перейти от A к D, и, вероятно, чтобы край тоже был окрашен в красный цвет или что-то в этом роде.
Это в основном похоже на путь от A к D, когда присутствуют все остальные узлы. вы можете представить каждый узел как город, и для путешествия от A к D требуются направления (со стрелками).
Этот код ниже строит график
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
G = nx.Graph()
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()]
nx.draw(G, cmap = plt.get_cmap('jet'), node_color = values)
plt.show()
но я хочу что-то вроде показанного на изображении.
Стрелки первого изображения и края красного цвета на втором изображении.
(C, E)
не красный, потому что я выбирал ребра,red_edges
когда еще работал с вашим неориентированным графом, просто выбирая случайным образом из ребер, возвращенныхG.edges()
. Так и должно бытьred_edges = [('A', 'C'), ('E', 'C')]
.draw_networkx_edges()
. Я очистил код и исправил проблемы с DiGraph.Я добавил это только для полноты картины. Я многому научился у мариуса и mdml. Вот веса ребер. Извините за стрелки. Похоже, я не единственный, кто говорит, что ничего не поделаешь. Я не мог отобразить это с помощью ipython notebook. Мне пришлось перейти прямо с python, что было проблемой с получением моих краевых весов раньше.
источник
node_labels = {node:node for node in G.nodes()}; nx.draw_networkx_labels(G, pos, labels=node_labels)
.G.add_edges_from()
линию без необходимости вручную вводить начальную и конечную точки? Возможно добавление ребер из аdict
?Вместо обычного nx.draw вы можете использовать:
Например:
Вы можете добавить параметры, инициализировав эту ** переменную следующим образом:
Также некоторые функции поддерживают.
directed=True parameter
В этом случае это состояние является значением по умолчанию:Ссылка на networkx находится здесь .
источник
Вам нужно использовать ориентированный граф вместо графа, т.е.
Затем создайте список цветов краев, которые вы хотите использовать, и передайте их в
nx.draw
(как показано @Marius).Собирая все это вместе, я получаю изображение ниже. Все еще не совсем то изображение, которое вы показываете (я не знаю, откуда берутся ваши граничные веса), но гораздо ближе! Если вы хотите больше контролировать внешний вид выходного графа (например, получить стрелки, которые выглядят как стрелки), я бы попробовал NetworkX с Graphviz .
источник
Это просто, как нарисовать ориентированный граф с использованием python 3.x с помощью networkx. просто простое представление, которое можно изменять и раскрашивать и т. д. См. сгенерированный график здесь .
Примечание: это простое представление. Утяжеленные края могут быть добавлены как
и, следовательно, построил снова.
источник
источник