【问题标题】:Change node color based on properties - neo4j根据属性更改节点颜色 - neo4j
【发布时间】:2015-11-01 20:45:13
【问题描述】:

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

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

【问题讨论】:

  • 你如何可视化你的节点? Cypher 和 py2neo 不绘制图形。
  • 在neo4j浏览器中

标签: neo4j py2neo


【解决方案1】:

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

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

【讨论】:

  • b) 还是这样吗??
【解决方案2】:

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

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

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

颜色基于属性

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

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

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

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

它将返回包含所有关系的案例和集群。下面是例子。

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-13
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 2012-08-11
        相关资源
        最近更新 更多