Добавление цвета края в сетевой график с помощью пакета NetworkxPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Добавление цвета края в сетевой график с помощью пакета Networkx

Сообщение Anonymous »




PATY_HI
PATY_LO
MATCH_KEY
WEIGHT_BUCKET




12345
6789
T
r< /td>


54321
3456
A ;Т
b


34567
12345
EP;T
y



Я использую пакет Networkx для создания визуализация ассоциаций клиента, поэтому пользователь может ввести номер клиента, и появится вся соответствующая информация. Я написал код для того же самого. Есть два столбца, содержащие информацию о клиентах первого уровня (PATY_HI и PATY_LO), два столбца для хранения сведений о том, как связаны клиенты, и столбец WEIGHT. Теперь я создал график и хочу раскрасить его ребра в соответствии со столбцом веса. Проблема, с которой я столкнулся, заключается в том, что цвет краев заполняется правильно только тогда, когда пользовательский ввод присутствует в PATY_HI, когда пользовательский ввод присутствует в PATY_LO, цвет края не появляется. Я не могу исправить то же самое. Может ли кто-нибудь помочь мне в решении того же? Вот код, который я написал для цвета края. Таким образом, со ссылкой на приведенную таблицу, когда пользовательский ввод присутствует в PATY_HI как 12345, цвет края правильно заполняется как красный, со ссылкой на приведенный пример, но в случае, когда 12345 присутствует в PATY_LO, цвет края желтый не появляется.
Написанный мной код:
Фильтрация кадров данных на основе выбранного значения PATY_HI

Код: Выделить всё

# Apply the format_cif function to the user input
cif = format_cif(cif)

# Get the active Snowflake session
session = get_active_session()

def network_graph(df_1, paty_hi):

# Filter dataframe based on selected PATY_HI value
filtered_df = df_1[(df_1['PATY_HI'] == paty_hi) | (df_1['PATY_LO'] == paty_hi)]

# Sort the dataframe by the date column in descending order
filtered_df = filtered_df.sort_values('EXPY_D', ascending=False)

# Create an empty graph
G = nx.Graph()

# Adding the nodes using CustomerIDs from both columns
G.add_nodes_from(filtered_df['PATY_HI'], label='')
G.add_nodes_from(filtered_df['PATY_LO'], label='')

# Dictionary to store the latest match_key for each pair of nodes
latest_match_key = {}

# Add edges to the graph based on associations
for _, row in filtered_df.iterrows():
paty_hi = row['PATY_HI']
paty_lo = row['PATY_LO']
match_key = row['MATCH_KEY']

# Only add the edge if it's the latest match_key for the pair
if (paty_hi, paty_lo) not in latest_match_key:
G.add_edge(paty_hi, paty_lo)
latest_match_key[(paty_hi, paty_lo)] = match_key

# Define the default color
default_color = 'black'

# Set node labels based on PATY_HI, PATY_HI_NAME, PATY_LO, and PATY_LO_NAME
node_labels = {}
for _, row in filtered_df.iterrows():
if row['PATY_HI'] not in node_labels:
node_labels[row['PATY_HI']] = row['PATY_HI_NAME']
if row['PATY_LO'] not in node_labels:
node_labels[row['PATY_LO']] = row['PATY_LO_NAME']

# Set edge weights based on the latest match_key
edge_weights = {}
for (paty_hi, paty_lo), match_key in latest_match_key.items():
edge_weights[(paty_hi, paty_lo)] = match_key

# Set edge colors based on the weight bucket
edge_colors = {}
for _, row in filtered_df.iterrows():
paty_hi = row['PATY_HI']
paty_lo = row['PATY_LO']
weight_bucket = row['WEIGHT_BUCKET']

if pd.notnull(weight_bucket):  # Check if the weight bucket is not NaN
if (paty_hi, paty_lo) not in edge_colors:
edge_colors[(paty_hi, paty_lo)] = weight_bucket

# Replace NaN values with a default color
default_color = 'black'
edge_colors = {k: v if pd.notnull(v) else default_color for k, v in edge_colors.items()}

#Adding Abbreviations to the graph
abbrev_dict ={
"A": "Address",
"J": "Account",
"R": "Declared Relationship",
"P": "Contact Number",
"E": "Email",
"F": "Application",
"T": "Transaction",
"$Sent": "Color Codes",
"T - Blue": "

Подробнее здесь: [url]https://stackoverflow.com/questions/79287964/adding-edge-color-to-the-network-graph-using-networkx-package[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»