Python 如何比较两个图中的节点和边?

Python 如何比较两个图中的节点和边?,python,networkx,osmnx,Python,Networkx,Osmnx,我有柏林2020年1月1日和2021年1月1日的图表,但我如何比较这两张地图中边和节点的变化 import osmnx as ox import pandas as pd import networkx as nx import matplotlib.pyplot as plt from itertools import combinations from IPython.display import clear_output import matplotlib.cm as cm import

我有柏林2020年1月1日和2021年1月1日的图表,但我如何比较这两张地图中边和节点的变化

import osmnx as ox
import pandas as pd
import networkx as nx 
import matplotlib.pyplot as plt
from itertools import combinations
from IPython.display import clear_output
import matplotlib.cm as cm
import matplotlib.colors as colors
from IPython.display import Image
在2021-01-01年获得柏林网络

ox.utils.config(overpass_settings='[out:json][timeout:180][date:"2021-01-01T00:00:00Z"]')

G_21=ox.graph.graph_from_place('Berlin,Germany', network_type='all_private', simplify=True, retain_all=True, truncate_by_edge=False,which_result=None, buffer_dist=None, clean_periphery=True,custom_filter='["highway"~"cycleway|path|living_street"]["bicycle"!~"no"]')
fig, ax = ox.plot_graph(G_21,node_size=1,edge_linewidth=0.5)
2020-01-01柏林网络

ox.utils.config(overpass_settings='[out:json][timeout:180][date:"2020-01-01T00:00:00Z"]')

G_20=ox.graph.graph_from_place('Berlin,Germany', network_type='all_private', simplify=True, retain_all=True, truncate_by_edge=False,which_result=None, buffer_dist=None, clean_periphery=True,custom_filter='["highway"~"cycleway|path|living_street"]["bicycle"!~"no"]')
fig, ax = ox.plot_graph(G_20,node_size=1,edge_linewidth=0.5)
现在,我想知道如何识别节点和边的更改,然后在G_21中标记添加的节点和边,在G_20中标记删除的节点和边。

记住,只使用NetworkX图形对象,因此您可以像对待任何NetworkX图形一样对待生成的两个图形,包括使用设置逻辑处理它们的节点/边:

将osmnx作为ox导入
地点='德国柏林'
cf=“[“高速公路”~“自行车道|小径|生活街”][“自行车”!~“不”]
设置=“[out:json][timeout:180][date:{year}-01-01T00:00:00Z]”
#获取2021年的图表
ox.utils.config(立交桥设置=settings.format(年份=2021))
G_21=ox.graph.graph_from_place(place,custom_filter=cf,retain_all=True)
#获取2020年图表
ox.utils.config(立交桥设置=settings.format(年份=2020))
G_20=ox.graph.graph_from_place(place,custom_filter=cf,retain_all=True)
#标识已删除/添加的节点/边
nodes_del=G_20.nodes-G_21.nodes
nodes_add=G_21.nodes-G_20.nodes
边=G_20.边-G_21.边
边添加=G_21.边-G_20.边
除了确定删除/添加了哪些节点/边外,您还可能对其属性值的更改感兴趣,在这种情况下,您可以检查节点/边的属性dict,并查看哪些键/值组合发生了更改