根据属性更改节点颜色 - neo4j

Change node color based on properties - neo4j

我想根据节点的属性更改节点的颜色:

假设我有很多 "Person" 个节点。我希望住在纽约的人是红色的,住在洛杉矶的人是蓝色的。我该怎么写呢。在 cypher 或 py2neo 中?

您不能在 neo4j 浏览器的 Cypher 查询中包含输出格式。目前,唯一的方法是手动更改图形视图或加载图形样式文件。

在此处查看教程:http://neo4j.com/developer/guide-neo4j-browser/

此外,您无法从 py2neo 与 neo4j 浏览器进行交互。

Neo4j 浏览器中节点和关系的样式由图形样式 sheet (GRASS) 控制,它是 CSS 的表亲。您可以在浏览器中输入 :style 查看当前样式。要编辑它,您可以单击节点和关系并选择颜色和大小,或者您可以查看样式 sheet (:style)、下载它、进行更改,然后将其拖放回去进入视图 window.

不幸的是,对于您的情况,颜色只能控制 a) 对于所有节点和所有关系,或 b) 对于按标签的节点和按类型的关系。属性只能用于 node/rel.

上显示的文本

无法以编程方式与 neo4j 浏览器交互。但最终目标可以通过破解来实现。

尽管我来晚了一点,但我想帮助可能正在寻找方法的其他人。无法根据 属性 更改节点的颜色,但有一种方法可以通过根据 属性 创建节点来实现。请记住,应用这些查询后,您的数据将不一样。因此,备份您的数据始终是个好主意。

默认情况下标签的颜色是这样的(之前):

颜色基于属性

假设有一个名为 Case 的标签,带有 属性 nationality,并且您想根据国籍为节点着色。因此,以下查询可用于创建国籍 属性 之外的标签。为此,您需要安装 apoc 库。检查 here 安装。

// BY NATIONALITY
MATCH (n:Case)
WITH DISTINCT n.nationality AS nationality, collect(DISTINCT n) AS persons
CALL apoc.create.addLabels(persons, [apoc.text.upperCamelCase(nationality)]) YIELD node
RETURN *

这将 return 所有国籍的人。现在您可以按国籍着色。下面显示了一个示例。

颜色基于 属性 并加载其他标签

假设您还有一个名为 Cluster 的标签。案例通过关系附加到集群。只需将查询更改为以下即可获取集群及其与个案的关系。

//BY NATIONALITY WITH CLUSTERS
MATCH (n:Case),(c:Cluster)
WITH DISTINCT n.nationality AS nationality, 
    collect(DISTINCT n) AS persons,
    collect(DISTINCT c) AS clusters
CALL apoc.create.addLabels(persons, [apoc.text.upperCamelCase(nationality)]) YIELD node
RETURN *

它将 return 个案例和集群与所有关系。下面显示示例。

如果这有帮助并想让其他人知道这是一个可以接受的答案,请留下赞成票。谢谢。

如果您喜欢通过图形用户界面而不是以编程方式设置颜色,Neo4j 还提供了一个名为 bloom 的数据探索插件。使用此插件时(现在使用 neo4j 桌面时会自动安装),可以根据其属性设置节点颜色。 在下面的示例中,2002 年之后发行的电影为绿色。