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

时间:2015-11-01 20:45:13

标签: neo4j py2neo

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

说我有很多"人"节点。而且我希望那些住在纽约的人是红色的,而那些住在洛杉矶的人则是蓝色的。我该怎么写呢在cypher或py2neo中?

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

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

请参阅此处的教程:http://neo4j.com/developer/guide-neo4j-browser/

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

答案 2 :(得分:1)

不可能在语法上与neo4j浏览器进行交互。但是最终目标可以通过黑客来实现。

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

默认情况下(之前),这是标签着色的方式:

enter image description here

基于属性的颜色

假设有一个名为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 *

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

enter image description here

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

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

//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 *

它将返回具有所有关系的个案和聚类。下面显示了示例。

enter image description here

如果这有帮助,请进行投票,并希望让其他人知道这是可以接受的答案。谢谢。

答案 3 :(得分:0)

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

enter image description here