У меня есть следующий фрейм данных:
Src Dst
A [A,B]
B [B,A]
C [C]
D [D,E,F]
E [E,D,F]
F [F,D,E]
...
Я хотел бы создать сеть, в которой Src
- узлы, Dst
- края и где новый столбец Weight
может назначьте другой цвет (зеленый) узлу, который равен A
или D, в то время как остальные все такие же (например, синий).
Я пробовал следующее:
Создать новый столбец Вес
nd=["A","D"]
df['Weight'] = np.where(df.Src.isin(nd), 1, 0)
Проблема в том, что я не знаю, как назначить цвет, поэтому я просто попытался присвоить значения 1 для A или D и 0 для всех остальных значений и отдельно для изменить цвета.
Для графика я использовал следующее
G = nx.from_pandas_edgelist(df, 'Src', 'Dst')
Приведенная выше строка кода не соединяется со строками узлов в Dst, и я не могу понять причину. Я нашел кое-что, что может быть полезно при назначении цветов:
colors=[]
for n in df.Src:
if n in df.Weight:
colors.append('g')
else:
colors.append('b')
# nodes
nx.draw_networkx_nodes(G,pos, node_color = colors)
, но у меня такая ошибка:
ValueError: аргумент 'c' имеет 79 элементов, которые несовместимо с 'x' и 'y' размером 76.
Изображение ниже будет примерно таким, как я ожидал (A
и D
узлы зеленые, другие синие и ссылки на основе данных Dst
; обратите внимание, что на изображении ниже в настоящее время НЕ воспроизводятся ни цвет, ни края).
введите описание изображения здесь
Не могли бы вы помочь мне дать совет, как это сделать?