与其他库集成

除了从头开始创建图(如入门部分中所示的 neo4j-viz),你还可以直接从外部源导入数据。在本节中,我们将介绍如何从 Pandas DataFramesNeo4j 图数据科学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 的列名直接映射到 NodesRelationships 的字段。

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.Graphneo4j.Result 形式。

我们还可以提供一个可选的 size_property 参数,它应指向一个节点属性,并将用于确定可视化中节点的大小。

node_captionrelationship_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 字符串,表示一个 GQL CREATE 查询。

我们还可以提供一个可选的 size_property 参数,它应指向一个节点属性,并将用于确定可视化中节点的大小。

node_captionrelationship_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)
© . All rights reserved.