与其他库集成¶
除了从头开始创建图(如入门部分中所示的 neo4j-viz
),你还可以直接从外部源导入数据。在本节中,我们将介绍如何从 Pandas DataFrames、Neo4j 图数据科学、Neo4j 数据库 和 GQL CREATE 查询导入数据。
Pandas DataFrames¶
neo4j-viz
库提供了一种方便的方法,用于从 Pandas DataFrames 导入数据。这些 DataFrames 可以从多种来源创建,例如 CSV 文件或 Snowflake 表。它需要安装一个额外的依赖项,你可以通过运行以下命令来安装:
pip install neo4j-viz[pandas]
安装了额外的依赖项后,你可以使用 from_gds 方法来导入 Pandas DataFrames。
from_dfs
方法需要两个强制位置参数
一个 Pandas
DataFrame
,或者表示图节点的 DataFrames 可迭代对象(例如列表)。DataFrame(s) 的行应表示各个节点,列应表示节点 ID 和属性。如果某一列的名称与 Node 的字段名称相同,则其包含的值将在此字段名下设置到相应的节点上。否则,列名将是每个节点 properties 字典中的一个键,映射到列中节点对应的`值`。如果图没有节点属性,则可以仅从关系 DataFrame 中派生出节点。一个 Pandas
DataFrame
,或者表示图关系的 DataFrames 可迭代对象(例如列表)。DataFrame(s) 的行应表示各个关系,列应表示关系 ID 和属性。如果某一列的名称与 Relationship 的字段名称相同,则其包含的值将在此字段名下设置到相应的关系上。否则,列名将是每个节点 properties 字典中的一个键,映射到列中节点对应的`值`。
from_dfs
还接受一个可选属性 node_radius_min_max
,该属性可用于(并且默认使用)缩放可视化中的节点大小。它是一个包含两个数字的元组,分别表示可视化中最小和最大节点的半径(大小)(以像素为单位)。节点大小将按比例缩放,使得最小节点的尺寸为第一个值,最大节点的尺寸为第二个值。其他节点将根据其相对大小在这两个值之间线性缩放。如果节点大小差异很大,或者都非常小或非常大,这会很有用。
示例¶
在这个小示例中,我们从两个 Pandas DataFrame 导入了一个表示社交网络的微型玩具图。正如我们所看到的,DataFrame 的列名直接映射到 Nodes 和 Relationships 的字段。
from pandas import DataFrame
from neo4j_viz.pandas import from_dfs
nodes = DataFrame({
"id": [1, 2, 3],
"caption": ["Alice", "Bob", "Charlie"],
"size": [20, 10, 10],
})
relationships = DataFrame({
"source": [1, 2],
"target": [2, 3],
"caption": ["LIKES", "KNOWS"],
})
VG = from_dfs(nodes, relationships)
有关 from_dfs
导入器实际应用的另一个示例,请参阅可视化 Snowflake 表教程。
Neo4j 图数据科学 (GDS) 库¶
neo4j-viz
库提供了一种方便的方法,用于从 Neo4j 图数据科学 (GDS) 库导入数据。它需要安装一个额外的依赖项,你可以通过运行以下命令来安装:
pip install neo4j-viz[gds]
安装了额外的依赖项后,你可以使用 from_gds 方法来从 GDS 库导入投影。
from_gds
方法需要两个强制位置参数
一个已初始化的
GraphDataScience
对象,用于连接 GDS 实例,以及一个表示要导入的投影的
Graph
。
可选的 max_node_count
参数可用于限制从投影导入的节点数量。默认情况下,它设置为 10,000,这意味着如果投影节点数超过 10,000 个,from_gds
将使用随机游走带重启(random walk with restarts)对其进行采样,以获得一个可用于可视化的更小的图。如果您想对采样进行更多控制,例如为样本选择特定的起始节点,您可以自行调用 采样方法,并将生成的投影传递给 from_gds
。
我们还可以提供一个可选的 size_property
参数,它应指向投影的节点属性,并将用于确定可视化中节点的大小。
additional_node_properties
参数也是可选的,它应该是一个列表,包含您希望包含在可视化中的投影的附加节点属性。默认值为 None,这意味着投影中节点的所有属性都将包含在内。除了通过悬停工具提示可见外,这些属性还可用于为节点着色,或在可视化中为其提供标题,或者只是包含在节点的 Node.properties 映射中,而不会直接影响可视化。
最后一个可选属性 node_radius_min_max
可用于(并且默认使用)缩放可视化中的节点大小。它是一个包含两个数字的元组,分别表示可视化中最小和最大节点的半径(大小)(以像素为单位)。节点大小将按比例缩放,使得最小节点的尺寸为第一个值,最大节点的尺寸为第二个值。其他节点将根据其相对大小在这两个值之间线性缩放。如果节点大小差异很大,或者都非常小或非常大,这会很有用。
示例¶
在这个小示例中,我们从 GDS 库导入了一个图投影,它具有“pagerank”和“componentId”节点属性。我们使用“pagerank”属性来确定节点的大小,并使用“componentId”属性来为节点着色。
from graphdatascience import GraphDataScience
from neo4j_viz.gds import from_gds
gds = GraphDataScience(...)
G = gds.graph.project(...)
# Compute the PageRank and Weakly Connected Components
gds.pageRank.mutate(G, mutateProperty="pagerank")
gds.wcc.mutate(G, mutateProperty="componentId")
# Import the projection into a `VisualizationGraph`
# Make sure to include `pagerank` and `componentId`
VG = from_gds(
gds,
G,
size_property="pagerank",
additional_node_properties=["componentId"],
)
# Color the nodes by the `componentId` property, so that the nodes are
# colored by the connected component they belong to
VG.color_nodes(property="componentId")
请参阅可视化 Neo4j 图数据科学 (GDS) 图教程以获取更广泛的示例。
Neo4j 数据库¶
neo4j-viz
库提供了一种方便的方法,用于从 Neo4j 导入数据。它需要安装一个额外的依赖项,你可以通过运行以下命令来安装:
pip install neo4j-viz[neo4j]
安装了额外的依赖项后,你可以使用 from_neo4j 方法来从 Neo4j 导入查询结果。
from_neo4j
方法需要一个强制位置参数
一个
result
,表示查询结果,可以是 neo4j.graph.Graph 或 neo4j.Result 形式。
我们还可以提供一个可选的 size_property
参数,它应指向一个节点属性,并将用于确定可视化中节点的大小。
node_caption
和 relationship_caption
参数也是可选的,用于指定节点和关系属性,以作为可视化中每个元素的标题。
最后一个可选属性 node_radius_min_max
可用于(并且默认使用)缩放可视化中的节点大小。它是一个包含两个数字的元组,分别表示可视化中最小和最大节点的半径(大小)(以像素为单位)。节点大小将按比例缩放,使得最小节点的尺寸为第一个值,最大节点的尺寸为第二个值。其他节点将根据其相对大小在这两个值之间线性缩放。如果节点大小差异很大,或者都非常小或非常大,这会很有用。
示例¶
在这个小示例中,我们从 Neo4j 查询结果导入了一个图。
from neo4j import GraphDatabase, RoutingControl, Result
from neo4j_viz.gds import from_gds
# Modify this to match your Neo4j instance's URI and credentials
URI = "neo4j://localhost:7687"
auth = ("neo4j", "password")
with GraphDatabase.driver(URI, auth=auth) as driver:
driver.verify_connectivity()
result = driver.execute_query(
"MATCH (n)-[r]->(m) RETURN n,r,m",
database_="neo4j",
routing_=RoutingControl.READ,
result_transformer_=Result.graph,
)
VG = from_neo4j(result)
请参阅可视化 Neo4j 图教程以获取更广泛的示例。
GQL CREATE
查询¶
neo4j-viz
库提供了通过 from_gql_create 方法从 GQL CREATE
查询创建可视化图的便利。
from_gql_create
方法需要一个强制位置参数
一个有效的
query
字符串,表示一个 GQLCREATE
查询。
我们还可以提供一个可选的 size_property
参数,它应指向一个节点属性,并将用于确定可视化中节点的大小。
node_caption
和 relationship_caption
参数也是可选的,用于指定节点和关系属性,以作为可视化中每个元素的标题。
最后一个可选属性 node_radius_min_max
可用于(并且默认使用)缩放可视化中的节点大小。它是一个包含两个数字的元组,分别表示可视化中最小和最大节点的半径(大小)(以像素为单位)。节点大小将按比例缩放,使得最小节点的尺寸为第一个值,最大节点的尺寸为第二个值。其他节点将根据其相对大小在这两个值之间线性缩放。如果节点大小差异很大,或者都非常小或非常大,这会很有用。
示例¶
在这个小示例中,我们从 GQL CREATE
查询创建了一个可视化图。
from neo4j_viz.gql_create import from_gql_create
query = """
CREATE
(a:User {name: 'Alice', age: 23}),
(b:User {name: 'Bridget', age: 34}),
(c:User {name: 'Charles', age: 45}),
(d:User {name: 'Dana', age: 56}),
(e:User {name: 'Eve', age: 67}),
(f:User {name: 'Fawad', age: 78}),
(a)-[:LINK {weight: 0.5}]->(b),
(a)-[:LINK {weight: 4}]->(c),
(e)-[:LINK {weight: 1.1}]->(d),
(e)-[:LINK {weight: -2}]->(f);
"""
VG = from_gql_create(query)